登陆讯飞开放平台
讯飞开放平台 访问此网址
进行注册登陆后,访问控制台
如图,会发现 Spark Lite 与 Spark Pro 它们的token都是无限的,但是Spark Pro是有时间限制的,然后右侧有APPID, APISecert, APIKey 等凭证。
话不多说,直接上代码!
代码部分
首先,在pom.xml文件里引入相关依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.67</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.java-websocket/Java-WebSocket -->
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.3.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.10.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.squareup.okio/okio -->
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>io.github.briqt</groupId>
<artifactId>xunfei-spark4j</artifactId>
<version>1.2.0</version>
</dependency>
ps: 其实我也忘记有哪些依赖了,应该就这些..
然后,在application.yaml配置文件里,配置相关信息
xunfei:
client:
appid: '自己的appid'
apiSecret: '自己的apiSecret'
apiKey: '自己的apiKey'
编写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 XingHuoConfig {
private String appid;
private String apiSecret;
private String apiKey;
@Bean
public SparkClient sparkClient() {
SparkClient sparkClient = new SparkClient();
sparkClient.apiKey = apiKey;
sparkClient.apiSecret = apiSecret;
sparkClient.appid = appid;
return sparkClient;
}
}
编写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 = "";
/**
* 向星火AI发送请求
*
* @param content
* @return
*/
public String sendMesToAIUseXingHuo(final String content) {
// 消息列表,可以在此列表添加历史对话记录
List<SparkMessage> messages = new ArrayList<>();
messages.add(SparkMessage.systemContent(PRECONDITION));
messages.add(SparkMessage.userContent(content));
// 构造请求
SparkRequest sparkRequest = SparkRequest.builder()
// 消息列表
.messages(messages)
// 模型回答的tokens的最大长度,非必传,默认为2048
.maxTokens(2048)
// 结果随机性,取值越高随机性越强,即相同的问题得到的不同答案的可能性越高,非必传,取值为[0,1],默认为0.5
.temperature(0.2)
// 指定请求版本
.apiVersion(SparkApiVersion.V1_5)
.build();
// 同步调用
SparkSyncChatResponse chatResponse = sparkClient.chatSync(sparkRequest);
String responseContent = chatResponse.getContent();
log.info("星火AI返回的结果{}", responseContent);
return responseContent;
}
}
注意!代码中 apiVersion的版本跟我前面截图右下角接口地址要一致如Spark Lite 与 Spark Pro要选择其中一个(如下图),我这里选择的是Spark Lite。
如图选择对应版本
测试
最后进行接口测试
进行依赖注入 --> 调用sendMesToAIUseXingHuo()方法 --> 拿到输出结果即可
还有可优化空间,比如进行模板的预设,返回值的优化等等。
最后, 附前端实现图: