目录
国内支持SDK调用的优秀开源AI平台
智谱AI(ZhipuAI):智谱AI是一家专注于大模型技术的公司,由清华大学计算机系知识工程实验室技术成果转化而来。智谱AI提供了包括对话模型、视觉模型、代码生成模型等多种AI模型,并提供了开放平台供开发者使用和集成。智谱AI的SDK可以用于快速集成其AI能力,如对话、图像识别等功能。
百度飞桨(PaddlePaddle):百度飞桨是中国首个开源深度学习平台,提供丰富的API和SDK,支持多种深度学习模型的开发和部署。
腾讯AI Lab:腾讯AI Lab提供了多种AI技术和服务,包括计算机视觉、语音识别、自然语言处理等领域的SDK和API。
阿里云机器学习平台PAI:阿里云提供的机器学习平台PAI支持多种机器学习算法和模型,提供了SDK供开发者调用。
华为ModelArts:华为云ModelArts是一个全流程模型生产服务,提供丰富的API和SDK,支持模型的训练、部署和管理。
注释:本文以智谱AI为例,其他开源AI平台同理
导入依赖
<dependency>
<groupId>cn.bigmodel.openapi</groupId>
<artifactId>oapi-java-sdk</artifactId>
<version>release-V4-2.3.0</version>
</dependency>
获取API key(注意保密)
官网的个人中心,找到项目管理下的API keys。
测试Demo
测试是否调用AI成功,注意API key要换成自己的。
@SpringBootTest
public class ZhiPuAiTest {
@Test
public void test() {
String apiKey = "自己的apikey";
// 创建客户端
ClientV4 client = new ClientV4.Builder(apiKey).build();
// 构造请求
List<ChatMessage> messages = new ArrayList<>();
ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "作为一名营销专家,请为智谱开放平台创作一个吸引人的slogan");
messages.add(chatMessage);
String requestId = String.valueOf(System.currentTimeMillis());
ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
.model(Constants.ModelChatGLM4)
.stream(Boolean.FALSE)
.invokeMethod(Constants.invokeMethod)
.messages(messages)
.requestId(requestId)
.build();
// 调用
ModelApiResponse invokeModelApiResp = client.invokeModelApi(chatCompletionRequest);
System.out.println("model output:" + invokeModelApiResp.getMsg());
}
}
封装通用AI模块
application.yml配置API key
# ai 配置
ai:
api-key: 自己的key
定义AI配置类
@Configuration
@ConfigurationProperties(prefix = "ai")
@Data
public class AiConfig {
/**
* apiKey
*/
private String apiKey;
@Bean
public ClientV4 getClientV4() {
return new ClientV4.Builder(apiKey).build();
}
}
封装通用的AI请求模块
AiManager类提供了多种方法来执行同步和流式请求,包括稳定和不稳定答案的同步请求,以及可以根据随机数温度参数自定义的同步请求。这些方法允许以简化的方式传递系统和用户消息,或者直接传递一个消息列表。
/**
* 通用 AI 调用能力
*/
@Component
public class AiManager {
@Resource
private ClientV4 clientV4;
// 稳定的随机数
private static final float STABLE_TEMPERATURE = 0.05f;
// 不稳定的随机数
private static final float UNSTABLE_TEMPERATURE = 0.99f;
/**
* 同步请求(答案不稳定)