首先到讯飞星火的官网注册账号并创建应用。每个应用的token是独立的。
讯飞星火大模型-AI大语言模型-星火大模型-科大讯飞https://xinghuo.xfyun.cn/sparkapi 注册并创建完后,可以选择要使用的模型。不同模型的付费制度不同,这里使用的是 Spark Lite ,也就是无限token的版本。成功之后的页面如下。
右半侧的 appid ,apiScret ,apiKey 都复制保存下来,下一步需要使用。
打开项目的pom文件,增加以下依赖。
<!--讯飞开放平台sdk-->
<dependency>
<groupId>io.github.briqt</groupId>
<artifactId>xunfei-spark4j</artifactId>
<version>1.2.0</version>
</dependency>
打开项目的 application.yaml,添加如下配置。这里的三项是之前复制保存的三项数据。
在config包下新建 SparkConfig.java 。
package com.vizziniAutoEmail.config;
import io.github.briqt.spark4j.SparkClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "xunfei.client")
@Data
public class SparkConfig {
private String appid;
private String apiSecret;
private String apiKey;
@Bean
public SparkClient sparkClient() {
SparkClient sparkClient = new SparkClient();
sparkClient.appid = this.appid;
sparkClient.apiSecret = this.apiSecret;
sparkClient.apiKey = this.apiKey;
return sparkClient;
}
}
在manager包下新建 SparkManager.java 类。
package com.vizziniAutoEmail.manager;
import io.github.briqt.spark4j.SparkClient;
import io.github.briqt.spark4j.constant.SparkApiVersion;
import io.github.briqt.spark4j.model.SparkMessage;
import io.github.briqt.spark4j.model.SparkSyncChatResponse;
import io.github.briqt.spark4j.model.request.SparkRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Component
@Slf4j
public class SparkManager {
@Resource
private SparkClient sparkClient;
/**
* AI生成问题的预设条件
*/
public static final String PRECONDITION = "在这里填写对Spark的预设:\n" +
"这里可以添加角色预设,譬如说“你是一名摄影师”\m" +
"给我一些摄影方面的指导\n" +
"这里可以添加对ai回答格式或方向的指定";
/**
* 向 Spark AI 发送请求
*
* @param content
* @return
*/
public String sendHttpTOSpark(final String content) {
// 消息列表,可以在此列表添加历史对话记录
List<SparkMessage> messages = new ArrayList<>();
messages.add(SparkMessage.systemContent(PRECONDITION));
messages.add(SparkMessage.userContent(content));
// 构造请求
SparkRequest sparkRequest = SparkRequest.builder()
// 消息列表
.messages(messages)
// 指定请求版本,lite版本是v1.5
.apiVersion(SparkApiVersion.V1_5)
.build();
// 同步调用
SparkSyncChatResponse chatResponse = sparkClient.chatSync(sparkRequest);
String responseContent = chatResponse.getContent();
log.info("Spark AI 返回的结果{}", responseContent);
return responseContent;
}
}
接下来在test下的manager包下创建 SparkManagerTest.java
package com.vizziniAutoEmail.manager;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
@SpringBootTest
public class SparkManagerTest {
@Resource
private SparkManager sparkManager;
private final String userInput = "你问的话";
@Test
public void testApi() {
String result = sparkManager.sendHttpTOSpark(userInput);
System.out.println(result);
}
}
最后启动 SparkManagerTest ,就可以在控制台得到 Spark AI 返回的结果。