第一章-AI大模型接入

223 阅读2分钟

一、模型选择

作为AI应用开发者,暂时不需要了解大模型的底层原理框架等,最重要的是选择正确的合适的大模型 要平衡好准确度、功能多样性、性能、成本、知识时效性等问题

image.png

进行大模型选型的时候要查看官方文档,大模型的工具调用支持非常重要,因为在应用开发中工具调用已经很常用并且成为主流,不同框架对不同模型的支持情况不同 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

屏幕截图 2025-07-19 183509.png

对于不同的功能需求都有对应的代码

image.png

文本输入的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);
    }
}