如何引入?先看官方文档
https://www.xfyun.cn/doc/spark/Web.html#_2-function-call%E8%AF%B4%E6%98%8E:~:text=%23-,3.%20%E8%B0%83%E7%94%A8%E7%A4%BA%E4%BE%8B,-%E6%B3%A8%3A%20demo%E5%8F%AA%E6%98%AF
我建议引入其他大佬写好的 sdk ,GitHub 地址:https://github.com/briqt/xunfei-spark4j
1 2 3 4 5 6 7
|
<dependency> <groupId>io.github.briqt</groupId> <artifactId>xunfei-spark4j</artifactId> <version>1.3.0</version> </dependency>
|
调用的话,不使用硬编码,而是把相关信息写在配置文件里面
1 2 3 4 5 6
| SparkClient sparkClient=new SparkClient();
sparkClient.appid=""; sparkClient.apiKey=""; sparkClient.apiSecret="";
|
config 文件,读取我们配置的信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import lombok.Data;
@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.setApiKey(apiKey); sparkClient.setApiSecret(apiSecret); sparkClient.setAppid(appid); return sparkClient; } }
|
如果生成的内容不符合自己的预期,解决方法:给他一个符合标准的例子, 虽然有耗费 token 但是暂时没想到更好的方式
这个 PRECONDITION 是我在 service 调用之前手动拼接到 content 前面,没太深入了解是不是能提前指定预设😅
AI 服务类相关的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| @Service @Slf4j public class Aiservice {
@Resource private SparkClient sparkClient;
@Resource private ClientV4 clientV4;
private static final float STABLE_TEMPERATURE = 0.05f;
public static final String PRECONDITION = "你是一个${角色定义},接下来我会按照以下固定格式给你提供内容:\n" +。。。。 + "下面是一个具体的例子的模板:"+;
public String sendMesToAIUseXingHuo(final String content) { List<SparkMessage> messages = new ArrayList<>(); messages.add(SparkMessage.userContent(content)); SparkRequest sparkRequest = SparkRequest.builder() .messages(messages) .maxTokens(2048) .temperature(0.2) .apiVersion(SparkApiVersion.V3_5) .build(); SparkSyncChatResponse chatResponse = sparkClient.chatSync(sparkRequest); String responseContent = chatResponse.getContent(); log.info("星火 AI 返回的结果 {}", responseContent); return responseContent; }
}
|