一、模型选择
作为AI应用开发者,暂时不需要了解大模型的底层原理框架等,最重要的是选择正确的合适的大模型 要平衡好准确度、功能多样性、性能、成本、知识时效性等问题
进行大模型选型的时候要查看官方文档,大模型的工具调用支持非常重要,因为在应用开发中工具调用已经很常用并且成为主流,不同框架对不同模型的支持情况不同 LangChain框架:docs.langchain4j.dev/integration… OpenAI框架:docs.spring.io/spring-ai/r…
二、程序调用大模型
后端环境需要JDK17及以上,因为JDK17以后有个虚拟线程功能十分厉害和重要 常见的调用方法有四种
- http调用
- SDK调用
- 使用框架
- SpringAI调用
- LangChain调用 推荐SpringAI,能很好的兼容Spring生态,对国产大模型兼容性也好,阿里巴巴有SpringAI Alibaba是对他的加强,在其原有基础上更好适配国内大模型
1.SDK调用
最好参考官方文档,因为这些技术具有时效性,变化快,以阿里云百炼平台的大模型为例 官方文档:help.aliyun.com/zh/model-st…
灵积和百炼的区别:简单来说,灵积主要作为提供通义千问大模型API服务的平台,侧重于开发者快速调用模型进行任务处理,而百炼则是一个更全面的大模型应用搭建与管理平台,不仅提供模型API,还包含了丰富的预置应用模板、业务场景模型,以及可视化操作界面和应用搭建工具,更适合业务人员使用。同时,百炼支持模型调优,具备企业级管理功能,并可提供定制化效果优化服务。
引入灵积的pom依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dashscope-sdk-java</artifactId>
<version>2.19.1</version>
</dependency>
在阿里云百炼申请一个API_KEY并选择自己需要的大模型,点击API参考可以看到具体的实例代码,可以通过OpenAI来调用大模型,也可以通过DashScope
对于不同的功能需求都有对应的代码
文本输入的java代码示例如下:
// 建议dashscope SDK的版本 >= 2.12.0
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
public class Main {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
Message systemMsg = Message.builder()
.role(Role.SYSTEM.getValue())
.content("You are a helpful assistant.")
.build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("你是谁?")
.build();
GenerationParam param = GenerationParam.builder()
// 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
.model("qwen-plus")
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
System.out.println(JsonUtils.toJson(result));
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
// 使用日志框架记录异常信息
System.err.println("An error occurred while calling the generation service: " + e.getMessage());
}
System.exit(0);
}
}