AI大模型接入实战:概念、方式与代码详解

文章结构:

目录

文章结构:

AI大模型接入实战:概念、方式与代码示例详解

引言

AI大模型概述

什么是AI大模型

常见大模型介绍

大模型分类

AI大模型接入方法

云服务vs自部署

三种主要接入方式

四种调用AI方式实战

1. SDK方式调用

2. HTTP原生调用

3. Spring AI框架调用

4. LangChain4j调用

Ollama本地部署实践

Ollama安装和运行

使用Spring AI调用本地Ollama模型

总结与展望


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大模型可以从多个维度进行分类:

  1. 按模态划分
    • 单模态:仅处理单一类型的数据,如纯文本
    • 多模态:能处理文本、图像、音频等多种类型的数据
  1. 按开源性划分
    • 闭源:不公开模型架构和权重,如GPT-4
    • 开源:公开模型架构和权重,如Llama 3
  1. 按规模划分
    • 超大规模:参数量在数百亿至数千亿
    • 中小规模:参数量在数亿至数十亿
  1. 按用途划分
    • 通用:适用于广泛的任务,如ChatGPT
    • 特定领域:针对特定场景优化,如医疗或法律领域的模型

作为开发者,我们无需深入了解大模型的底层原理,而应该专注于选择合适的模型、有效利用AI能力并了解模型的能力边界。在实际应用中,可以根据需求从功能支持、性能指标等维度评估不同的模型。

AI大模型接入方法

云服务vs自部署

接入AI大模型主要有两种途径:云服务和自部署。

云服务优势

  • 无需考虑基础设施
  • 按需付费,初期成本低
  • 维护简单,自动升级
  • 快速上线

自部署优势

  • 数据隐私保障程度高
  • 可深度定制模型
  • 长期使用成本可控
  • 不受第三方服务限制

对于个人开发者和初创企业,云服务通常是更合适的选择;而对于对数据安全要求高、拥有足够资源的大型企业,自部署可能是更好的选择。

三种主要接入方式

  1. AI应用平台接入通过如阿里云百炼、腾讯云灵犀等平台,可以快速创建AI应用并集成到自己的项目中。这些平台通常提供直观的界面,无需编写复杂代码。

        工作流

  1. AI软件客户端接入使用专业的AI辅助开发工具,如Cursor、Trae(海外)、Windsurf等。这些工具通常提供更加专业的开发辅助功能。
  2. 程序接入直接在代码中调用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大时代,探索更多可能性!

觉得有用的话可以点点赞 (/ω\),支持一下。

如果愿意的话关注一下。会对你有更多的帮助。

每周都会不定时更新哦 >人< 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值