pom.xml导入依赖
依赖地址
<!-- github ai接口调用 -->
<dependency>
<groupId>io.github.briqt</groupId>
<artifactId>xunfei-spark4j</artifactId>
<version>1.3.0</version>
</dependency>
application.yml添加配置
#讯飞AI配置,在讯飞星火模型中申请
xunfei:
client:
appid:
apiSecret:
apiKey:
编写自动配置类
package com.data_analysis.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "xunfei.client")
public class SparkClientProperties {
private String appid;
private String apiSecret;
private String apiKey;
}
编写接口实现类
package com.data_analysis.manager;
import com.data_analysis.config.SparkClientProperties;
import io.github.briqt.spark4j.SparkClient;
import io.github.briqt.spark4j.constant.SparkApiVersion;
import io.github.briqt.spark4j.exception.SparkException;
import io.github.briqt.spark4j.model.SparkMessage;
import io.github.briqt.spark4j.model.SparkSyncChatResponse;
import io.github.briqt.spark4j.model.request.SparkRequest;
import io.github.briqt.spark4j.model.response.SparkTextUsage;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 用于对接 AI 平台
*/
@Service
@RequiredArgsConstructor
public class AiManager {
private final SparkClientProperties sparkClientProperties;
public String doChat(String message) {
SparkClient sparkClient = new SparkClient();
// 设置认证信息
sparkClient.appid = sparkClientProperties.getAppid();
sparkClient.apiKey = sparkClientProperties.getApiKey();
sparkClient.apiSecret = sparkClientProperties.getApiSecret();
// 消息列表,可以在此列表添加历史对话记录
List<SparkMessage> messages = new ArrayList<>();
//设置ai角色设定
messages.add(SparkMessage.systemContent("你是一个数据分析师和前端开发专家"));
//设置发送的内容格式
messages.add(SparkMessage.userContent("按照以下固定格式给你提供内容:\n" +
" 分析需求:\n" +
" {数据分析的需求或者目标}\n" +
" 原始数据:\n" +
" {csv格式的原始数据,用,作为分隔符}\n" +
" 请根据这两部分内容,严格按照以下指定格式生成内容(此外不要输出任何多余的开头、结尾、注释)同时不要使用这个符号 '】'\n" +
" 【【【【【\n" +
" {前端 Echarts V5 的 option 配置对象 JSON 代码, 字段使用\"\"包围,不要生成任何多余的内容,比如注释和代码块标记}\n" +
" 【【【【【\n" +
" {明确的数据分析结论、越详细越好,不要生成多余的注释} \n"+message));
// 构造请求
SparkRequest sparkRequest = SparkRequest.builder()
// 消息列表
.messages(messages)
.maxTokens(2048)
.temperature(0.2)
//设置星火模型版本号,也可以配置在配置文件中
.apiVersion(SparkApiVersion.V3_5)
.build();
try {
// 同步调用
SparkSyncChatResponse chatResponse = sparkClient.chatSync(sparkRequest);
System.err.println("获取到原数据结果:"+chatResponse.getContent());
return chatResponse.getContent();
} catch (SparkException e) {
System.out.println("发生异常了:" + e.getMessage());
}
return "";
}
}
调用接口
//调用AI接口
String result = aiManager.doChat(userInput);