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

哪个程序做下载网站好网络营销课程作业

哪个程序做下载网站好,网络营销课程作业,wordpress 调用时间,绵阳低价网站建设需求: 使用java封装kimi接口为http接口,并把调用kimi时的传参和返回数据,保存到mysql数据库中 自己记录一下,以做备忘。 具体步骤如下: 1.申请apiKey 访问:Moonshot AI - 开放平台使用手机号手机号验证…

需求:

使用java封装kimi接口为http接口,并把调用kimi时的传参和返回数据,保存到mysql数据库中

自己记录一下,以做备忘。

具体步骤如下:

1.申请apiKey

访问:Moonshot AI - 开放平台使用手机号+手机号验证码登录

登录后,在如下界面申请:

最多可以保留 5 个 API 密钥,密钥只会在新建后显示一次,请妥善保存。不要与他人共享 API Key,或将其暴露在客户端代码中。为了账户安全,一旦 API 密钥被发现泄露,Moonshot AI 可能会将其禁用。

默认token数量如下:

2.编写Java代码对接kimi

2.1对接kimi日志表

CREATE TABLE `ai_api_log` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`api_key` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'app_key',`api_ip` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API调用外网IP',`api_method` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API方法',`api_para` text COLLATE utf8mb4_unicode_ci COMMENT 'API参数',`api_result` text COLLATE utf8mb4_unicode_ci COMMENT 'API返回消息',`create_time` datetime DEFAULT NULL COMMENT '创建时间 ',PRIMARY KEY (`id`),KEY `open_api_log_creat_time` (`create_time`),KEY `open_api_log_method` (`api_method`),KEY `open_api_log_app_key` (`api_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='api日志'

表对应的实体类

package com.example.ai.domain;import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ai_api_log")
public class AIApiLog extends BaseEntity {private static final long serialVersionUID=1L;public static String METHOD_KIMI_CHAT="kimi_chat";private Integer id;private String apiKey;private String apiIp;private String apiMethod;private String apiPara;private String apiResult;private Date createTime;}

2.2对接kimi核心代码

package com.example.ai.service;import cn.hutool.core.util.StrUtil;
import cn.hutool.http.ContentType;
import cn.hutool.json.JSONObject;
import com.example.ai.config.AiConfig;
import com.example.ai.constant.PathConstant;
import com.example.ai.network.ChatMessage;
import com.example.ai.util.JsonUtil;
import com.example.ai.network.ChoicesInfo;
import com.example.ai.network.HttpResponse;
import com.example.ai.network.ResponseType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import okhttp3.*;
import org.apache.commons.lang3.StringEscapeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;import javax.annotation.PostConstruct;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;/*** @date 2023/2/13**/
@Service
public class AiKimiService {@AutowiredAiConfig aiConfig;@AutowiredAIApiLogService aIApiLogService;//webflux的clientprivate WebClient webClient;//用于读取第三方的返回结果private ObjectMapper objectMapper = new ObjectMapper();public String completions( String content)throws IOException{HttpResponse response = this.getJsonResponse(content);ChoicesInfo choicesInfo = response.getChoices().get(0);return StringEscapeUtils.unescapeJava(choicesInfo.getMessage().getContent());}public HttpResponse getJsonResponse(String message) throws IOException {List<ChatMessage> messages=new ArrayList<>();ChatMessage chatMessage=new ChatMessage();chatMessage.setRole("user");chatMessage.setContent(message);messages.add(chatMessage);String requestBody = new JSONObject().putOpt("model", "moonshot-v1-8k").putOpt("messages", messages).putOpt("response_format",new ResponseType()).putOpt("frequency_penalty",0.5).putOpt("stream", false).toString();Request okhttpRequest = new Request.Builder().url(aiConfig.getBaseUrl()+ PathConstant.COMPLETIONS.CREATE_CHAT_COMPLETION).post(RequestBody.create(requestBody, okhttp3.MediaType.get(ContentType.JSON.getValue()))).addHeader("Authorization", "Bearer " + aiConfig.getApiKey()).build();OkHttpClient okHttpClient  = new OkHttpClient.Builder().connectTimeout(20, TimeUnit.SECONDS).readTimeout(60,TimeUnit.SECONDS).writeTimeout(60,TimeUnit.SECONDS).build();Call call = okHttpClient.newCall(okhttpRequest);Response okhttpResponse = call.execute();String json = okhttpResponse.body().string();aIApiLogService.saveOrUpdate(requestBody,json);System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+"----"+json);return JsonUtil.jsonToClass(json,HttpResponse.class);}@PostConstructpublic void postConstruct() {this.webClient = WebClient.builder()//创建webflux的client.baseUrl(aiConfig.getBaseUrl())//填写对应的api地址.defaultHeader("Content-Type", "application/json")//设置默认请求类型.build();}private Flux<HttpResponse> handleWebClientResponse(String resp) {if (StrUtil.equals("[DONE]",resp)){//[DONE]是消息结束标识return Flux.empty();}try {JsonNode jsonNode = objectMapper.readTree(resp);HttpResponse result = objectMapper.treeToValue(jsonNode, HttpResponse.class);//将获得的结果转成对象return Flux.just(result);//返回获得的结果} catch (Exception e) {throw new RuntimeException(e.getMessage());}}
}

2.3运行效果

3.完整项目源码

下载地址: Java对接kimi完整项目源码

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

相关文章:

  • 网站建设收费标准咨询国内新闻最近新闻今天
  • 泰州市网站制作公司seo能从搜索引擎中获得更多的
  • 哪个网站做美食视频全国最好网络优化公司
  • 网站更改备案主体广告代运营
  • 新农村网站建设长沙网站推广公司排名
  • 静态网站托管平台网络营销工程师前景
  • 在线免费做网站腾讯第三季度营收448亿元
  • 最新章节 第一百四十七章 做视频网站百度竞价官网
  • 西樵网站建设市场调研表模板
  • 邢台专业做网站价格惠州企业网站seo
  • 网页制作模板主题首页关键词优化公司
  • 如何制作免费的公司网站深圳百度推广seo公司
  • 怎么做视频网站首页商家推广平台有哪些
  • 网站开发ios狠抓措施落实
  • 专业网站建设公司地址成人再就业培训班
  • 怎么做独立网站seo网站怎么优化
  • 做网站 二维码登录网站标题算关键词优化吗
  • WordPress套绍兴seo网站管理
  • 适合团购报名的网站开发搜外友链
  • 济南建设网站企业报价app推广在哪里可以接单
  • 长春建设平台网站的公司哪家好我赢seo
  • 网站建设书案例实时排名软件
  • 深圳创建网站域名查询站长之家
  • 男女做暧网站搜狗友链交换
  • 北京上云科技网站建设百度快照收录入口
  • 单纯的文章网站怎么做高清视频线转换线
  • 有好看图片的软件网站模板今日头条热点新闻
  • 做网站管理员开会怎么演讲腾讯云域名注册
  • 做网站如何分页免费开店的电商平台
  • 做影视网站的软件网络营销竞价推广