当前位置: 首页 > news >正文

西安做网站的在哪把百度网址大全设为首页

西安做网站的在哪,把百度网址大全设为首页,易语言 做网站mysql,小企业网站建设方案整合很简单,不过需要几个小条件 1.必须要有openai官方的key 2.国内需要有代理服务器或者国外的服务器把项目部署出去也没问题 我没有使用spring的springAI,听说很方便,日后有机会去体验体验,我今天用了两种方式整合了gpt 1.Ch…

整合很简单,不过需要几个小条件

1.必须要有openai官方的key

2.国内需要有代理服务器或者国外的服务器把项目部署出去也没问题

我没有使用spring的springAI,听说很方便,日后有机会去体验体验,我今天用了两种方式整合了gpt

1.Chatgpt-Java :📖 项目简介 | Chatgpt-Java (unfbx.com)

这个巨巨巨方便,整合gpt,可以跟着官网的快速入门走,一下就解决了

先导入maven依赖

        <dependency><groupId>com.unfbx</groupId><artifactId>chatgpt-java</artifactId><version>1.1.5</version></dependency>

然后我直接写接口

@RestController
@RequestMapping("/ai")
@Api(tags = "ai")
public class AiController {@ApiOperation("ai对话")@PostMapping("/test")public ResultResponse test(String msg){OpenAiClient openAiClient = OpenAiClient.builder().apiKey(Arrays.asList("xxxxxxxxxxxxxxxxxxxxxxxxxxxxx")).build();Message message = Message.builder().role(Message.Role.USER).content(msg).build();ChatCompletion chatCompletion = ChatCompletion.builder().messages(Arrays.asList(message)).build();ChatCompletionResponse chatCompletionResponse = openAiClient.chatCompletion(chatCompletion);
//        chatCompletionResponse.getChoices().forEach(e -> {
//            System.out.println(e.getMessage());
//        });return ResultResponse.success(chatCompletionResponse.getChoices());}
}

xxxxxxxxxxxxxxx自己替换成自己的key哈。

结束,到这里就可以直接使用gpt了,自己去postman测试一下就行。

2.直接给官网api发请求

首先3个dto类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ChatBotRequest {private String model;private List<Message> messages;private int n;private double temperature;private int max_tokens;
}
------------------------------------------
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ChatBotResponse {private List<Choice> choices;@Data@AllArgsConstructor@NoArgsConstructorpublic static class Choice {private int index;private Message message;}
}
------------------------------------------
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Message {private String role;private String content;}

其次配置一下config

@Configuration
public class OpenAIChatGtpConfig {private final String openaiApiKey = "xxxxxxxxxxxxxxxxxxxxxxx";@Beanpublic RestTemplate restTemplate() {RestTemplate restTemplate = new RestTemplate();restTemplate.getInterceptors().add((request, body, execution) -> {request.getHeaders().add("Authorization", "Bearer " + openaiApiKey);return execution.execute(request, body);});return restTemplate;}
}

最后依然是直接写接口

@Api(tags = "chat")
@RestController
@RequestMapping("/chats")
public class ChatBotController {@Autowiredprivate RestTemplate restTemplate;@ApiOperation("chat")@PostMapping("/chat")public ChatBotResponse chat(@RequestParam("prompt") String prompt) {ChatBotRequest request = new ChatBotRequest("gpt-3.5-turbo",Arrays.asList(new Message("user", prompt)),1,0,100);ChatBotResponse chatBotResponse = restTemplate.postForObject("https://api.openai.com/v1/chat/completions", request, ChatBotResponse.class);return chatBotResponse;}
}

至此第二种整合方式也结束了,其实就这种阻塞式整合真的很简单,不过体验感其实比不上流式整合,回头什么时候去试试流式整合。

Cannot resolve method ‘of’ in ‘List’ 或 找不到符号of

顺带今天碰见了一点小报错,才知道Arrays.asList其实等同于List.of。不过List.of是jdk9里面新出的,jdk8没有,因此只能用自己的老东西Arrays.asList。( 参考的是【BUG】Cannot resolve method ‘of‘ in ‘List‘ 或 找不到符号of(非jdk8版本问题)_cannot resolve method 'of' in 'list-CSDN博客)

两种整合方式都可以顺利连通,不过此时我发现gpt竟然无法联系上下文。去网上找了很久发现原来暂时没有可以直接自己联系上下文的大模型,因此得自己来做操作。感到疑惑可以看一下这个博客:手把手教会你如何通过ChatGPT API实现上下文对话 - 个人文章 - SegmentFault 思否

原理很简单,每次把之前得mes全部拼接起来,直接开始实现吧:

maven依赖:

            <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
@RestController
@RequestMapping("/ai")
@Api(tags = "ai")
public class AiController {public static final String token = "sk-proj-xElzheeQc3nqZrWm3J6lT3BlbkFJRCQpGjcqfdkj5jsdC1KM";private static final String CHAT_HISTORY_KEY = "chat_history";@Autowiredprivate RedisTemplate<String, String> redisTemplate;@Autowiredprivate AiService aiService;@ApiOperation("ai对话")@PostMapping("/tall")public ResultResponse tall(@RequestParam("msg") String msg,@RequestParam("userId") String userId) {String keyword = CHAT_HISTORY_KEY + "_tall" + userId;ListOperations<String, String> listOps = redisTemplate.opsForList();Message userMessage = Message.builder().role(Message.Role.USER).content(msg).build();List<String> history = listOps.range(keyword , 0, -1);List<Message> messages = new ArrayList<>();for (String historicalMessage : history) {messages.add(Message.builder().role(Message.Role.USER).content(historicalMessage).build());}messages.add(userMessage);OpenAiClient openAiClient = OpenAiClient.builder().apiKey(Arrays.asList(token)).build();ChatCompletion chatCompletion = ChatCompletion.builder().messages(messages).model("gpt-3.5-turbo").build();ChatCompletionResponse chatCompletionResponse = openAiClient.chatCompletion(chatCompletion);String gptResponse = chatCompletionResponse.getChoices().get(0).getMessage().getContent();if(redisTemplate.opsForList().size(keyword ) >= 6){listOps.leftPop(keyword );}listOps.rightPush(keyword, "user:"+msg); //指定role角色更有利于ai理解上下文信息listOps.rightPush(keyword, "assistant:"+gptResponse);return ResultResponse.success(gptResponse);}
}

很简单,就用了redis得list结构当作一个消息队列用,记录最近得6条上下文,每次拼接过去就好。

防止缓存一直占空间,可以自己弄个定时器每天或者每个月清理一次消息队列。

先再自己得application上面加个开关注解:

@EnableScheduling
@SpringBootApplication()
public class ExamsystemApplication extends SpringBootServletInitializer 

然后直接写定时器:

@Component
public class TimerTask {@Autowiredprivate RedisTemplate<String, String> redisTemplate;@Scheduled(cron = "0 0 0 1 * ?") // 每个月1号的凌晨执行public void TaskMethod() {try {Set<String> keys = redisTemplate.keys("chat_history*");redisTemplate.delete(keys);} catch (Exception e) {System.err.println("Failed to reset frequency: " + e.getMessage());}}}

到现在ai也拥有上下文了,爽歪歪。

http://www.mmbaike.com/news/52056.html

相关文章:

  • 网站建设中什么意思做竞价托管的公司
  • 哪里有机械加工活巢湖seo推广
  • jsp开发网站清博舆情系统
  • 深圳 三人 网站建设营销培训内容有哪些
  • 个人网上怎样注册公司seo和点击付费的区别
  • 格力网站建设首页网络促销策略
  • 重生做皇帝小说网站裂变营销
  • 诛仙2官方网站西施任务怎么做搜狗站长平台验证网站
  • 一级a做爰片免费观网站看无码全网推广平台
  • 正能量网站推荐不需要下载品牌营销策划网站
  • 空中客车网站建设需求百度竞价推广托管
  • 自己做的网站本地虚拟上传不屏蔽的国外搜索引擎
  • 自媒体还是做网站企业查询app
  • 赶集网站建设多少钱推广赚钱app哪个靠谱
  • 网站建设税点教育培训平台
  • wordpress商品分销标题优化方法
  • 做服装外贸的网站网站搜索引擎优化的基本内容
  • 免费用手机制作网站 百度百深圳网络营销推广专员
  • 南通网站上百度首页品牌策略怎么写
  • 网站设计用什么软件做惠州seo网络推广
  • 做网站运维应该看的书爱站工具包
  • 网站设计的发展趋势成品在线视频免费入口
  • 海淀区城市建设档案馆网站网络营销策略ppt
  • 网站开发需求描述长沙seo咨询
  • 西安网站制作一般多少钱长沙营销型网站建设
  • 网页制作网站设计稿营口建网站的公司
  • 网站价值评估怎么做做一个电商平台大概需要多少钱
  • 英文b2c网站建设我要推广网
  • 网站制作要花多少钱google中文搜索引擎
  • 自己动手做网站百度推广营销页