文章结构:
目录
AI大模型接入实战:概念、方式与代码示例详解
引言
人工智能技术的飞速发展,特别是大型语言模型(LLM)的崛起,正在深刻改变我们的工作和生活方式。作为开发者,了解如何有效地接入和利用这些强大的AI能力,已成为当下必不可少的技能。无论是提升用户体验、自动化繁琐任务,还是创造全新的业务模式,AI大模型都提供了前所未有的可能性。
本文将带你全面了解AI大模型的概念与分类,探讨不同的接入方式及其优缺点,并通过实际代码示例展示多种调用AI的方法。即使你是AI领域的新手,通过本文的指引,也能快速掌握AI大模型的接入技巧。
AI大模型概述
什么是AI大模型
AI大模型是指那些拥有超大规模参数的深度学习模型,它们经过海量数据训练,能够处理多模态数据(如文本、图像、音频等),具备逻辑推理和代码编写等"涌现能力"。这些模型通常拥有数十亿甚至数千亿的参数,能够理解复杂指令并生成高质量的内容。
常见大模型介绍
目前市场上有众多知名的AI大模型,主要包括:
- OpenAI:提供GPT-4o(多模态)、GPT-4(文本+图像)、GPT-3.5 Turbo等模型
- Anthropic:推出Claude 3系列模型
- Google:开发了Gemini Ultra/Pro/Nano系列
- Meta:开源了Llama 3和Llama 2模型
- 国内大模型:包括百度文心一言、阿里通义千问等
大模型分类
AI大模型可以从多个维度进行分类:
- 按模态划分:
-
- 单模态:仅处理单一类型的数据,如纯文本
- 多模态:能处理文本、图像、音频等多种类型的数据
- 按开源性划分:
-
- 闭源:不公开模型架构和权重,如GPT-4
- 开源:公开模型架构和权重,如Llama 3
- 按规模划分:
-
- 超大规模:参数量在数百亿至数千亿
- 中小规模:参数量在数亿至数十亿
- 按用途划分:
-
- 通用:适用于广泛的任务,如ChatGPT
- 特定领域:针对特定场景优化,如医疗或法律领域的模型
作为开发者,我们无需深入了解大模型的底层原理,而应该专注于选择合适的模型、有效利用AI能力并了解模型的能力边界。在实际应用中,可以根据需求从功能支持、性能指标等维度评估不同的模型。
AI大模型接入方法
云服务vs自部署
接入AI大模型主要有两种途径:云服务和自部署。
云服务优势:
- 无需考虑基础设施
- 按需付费,初期成本低
- 维护简单,自动升级
- 快速上线
自部署优势:
- 数据隐私保障程度高
- 可深度定制模型
- 长期使用成本可控
- 不受第三方服务限制
对于个人开发者和初创企业,云服务通常是更合适的选择;而对于对数据安全要求高、拥有足够资源的大型企业,自部署可能是更好的选择。
三种主要接入方式
- AI应用平台接入通过如阿里云百炼、腾讯云灵犀等平台,可以快速创建AI应用并集成到自己的项目中。这些平台通常提供直观的界面,无需编写复杂代码。
工作流
- AI软件客户端接入使用专业的AI辅助开发工具,如Cursor、Trae(海外)、Windsurf等。这些工具通常提供更加专业的开发辅助功能。
-
- 程序接入直接在代码中调用AI大模型API或调用平台创建的应用。这种方式灵活性最高,可以深度集成到现有系统中。个人小项目可以考虑调用平台创建的应用,而企业级项目考虑到扩展性,通常选择直接调用大模型API。
四种调用AI方式实战
1. SDK方式调用
使用AI提供商的官方SDK进行调用,这种方式通常提供最完整的功能支持:
package com.lenyan.lenaiagent.demo.invoke;
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.utils.JsonUtils;
import java.util.Arrays;
public class SdkAiInvoke {
public static void main(String[] args) {
try {
Generation gen = new Generation();
GenerationParam param = GenerationParam.builder()
.apiKey("YOUR_API_KEY")
.model("qwen-plus")
.messages(Arrays.asList(
Message.builder().role(Role.SYSTEM.getValue()).content("You are a helpful assistant.")
.build(),
Message.builder().role(Role.USER.getValue()).content("你是谁?").build()))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
GenerationResult result = gen.call(param);
System.out.println("SDK调用:" + JsonUtils.toJson(result));
} catch (Exception e) {
System.err.println("调用服务错误: " + e.getMessage());
}
}
}
2. HTTP原生调用
直接使用HTTP请求调用AI服务的REST API,这种方式适用性更广,几乎可以在任何编程语言中使用:
package com.lenyan.lenaiagent.demo.invoke;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.springframework.stereotype.Component;
@Component
public class HttpAiApiClient {
public static String callQwenModel(String apiKey, String userMessage) {
String url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation";
JSONObject requestBody = JSONUtil.createObj()
.set("model", "qwen-plus")
.set("input", JSONUtil.createObj()
.set("messages", JSONUtil.createArray()
.put(JSONUtil.createObj().set("role", "system").set("content",
"You are a helpful assistant."))
.put(JSONUtil.createObj().set("role", "user").set("content", userMessage))))
.set("parameters", JSONUtil.createObj().set("result_format", "message"));
return HttpRequest.post(url)
.header("Authorization", "Bearer " + apiKey)
.header("Content-Type", "application/json")
.body(requestBody.toString())
.execute()
.body();
}
public static void main(String[] args) {
System.out.println("Http调用:" + callQwenModel("YOUR_API_KEY", "你是谁?"));
}
}
3. Spring AI框架调用
Spring AI是Spring生态系统中专为AI集成设计的框架,它提供了统一的抽象层,使开发者能够轻松集成各种AI模型提供商:
package com.lenyan.lenaiagent.demo.invoke;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class SpringAiInvoke implements CommandLineRunner {
@Autowired
private ChatClient chatClient;
@Override
public void run(String... args) throws Exception {
String response = chatClient.call(new Prompt("你是谁?"))
.getResult()
.getOutput()
.getContent();
System.out.println("Spring AI调用: " + response);
}
}
4. LangChain4j调用
LangChain4j是Java版的LangChain实现,专为构建AI应用而设计,提供了丰富的组件和工具:
package com.lenyan.lenaiagent.demo.invoke;
import dev.langchain4j.community.model.dashscope.QwenChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
public class LangChainAiInvoke {
public static void main(String[] args) {
ChatLanguageModel model = QwenChatModel.builder()
.apiKey("YOUR_API_KEY")
.modelName("qwen-max")
.build();
System.out.println("LangChainAi调用:" + model.chat("我是程序员lenyan"));
}
}
Ollama本地部署实践
除了云服务,我们也可以通过Ollama在本地部署和运行开源大模型:
Ollama安装和运行
可以使用以下命令运行Ollama中的一个模型:
ollama run deepseek-r1:7b
忽略背景壁纸🤣
使用Spring AI调用本地Ollama模型
package com.lenyan.lenaiagent.demo.invoke;
import jakarta.annotation.Resource;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.boot.CommandLineRunner;
/**
* Spring AI 框架调用 AI 大模型(Ollama)
*/
public class OllamaAiInvoke implements CommandLineRunner {
@Resource
private ChatModel ollamaChatModel;
@Override
public void run(String... args) throws Exception {
System.out.println("ollama调用: " +
ollamaChatModel.call(new Prompt("你好,我是lenyan"))
.getResult()
.getOutput()
.getText());
}
}
要配置Spring AI使用Ollama,需要在配置文件中添加相应的设置:
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
options:
model: deepseek-r1:7b
总结与展望
随着AI大模型技术的迅速发展,我们有多种方式将其能力集成到自己的应用中。每种接入和调用方式都有其适用场景:
- SDK调用:适合需要深度集成并使用全部功能的场景
- HTTP原生调用:灵活性高,适合任何语言和平台
- Spring AI框架:适合Spring生态系统的项目,提供统一抽象和便捷接口
- LangChain4j:适合构建复杂AI应用,提供丰富组件和工具链
- 本地部署(如Ollama):适合对数据隐私要求高或需要离线运行的场景
在选择接入方式时,需要考虑项目需求、技术栈、安全要求和预算等因素。随着AI技术的不断进步,我们可以期待更多便捷的接入方式和更强大的模型能力。
作为开发者,持续学习和探索AI技术将使我们在这个快速发展的领域保持竞争力。无论你是刚开始接触AI,还是已经有所经验,希望本文能为你的AI开发之旅提供有价值的指引。
让我们共同迎接AI大时代,探索更多可能性!
觉得有用的话可以点点赞 (/ω\),支持一下。
如果愿意的话关注一下。会对你有更多的帮助。
每周都会不定时更新哦 >人< 。