欢迎光临
我们一直在努力

【AI Agent 全栈开发】LLM的接入方式

🚀 欢迎来到我的CSDN博客:Optimistic _ chen ✨ 一名热爱技术与分享的全栈开发者,在这里记录成长,专注分享编程技术与实战经验,助力你的技术成长之路,与你共同进步!


🚀我的专栏推荐:

专栏内容特色适合人群
🔥C语言从入门到精通 系统讲解基础语法、指针、内存管理、项目实战 零基础新手、考研党、复习
🔥Java基础语法 系统解释了基础语法、类与对象、继承 Java初学者
🔥Java核心技术 面向对象、集合框架、多线程、网络编程、新特性解析 有一定语法基础的开发者
🔥Java EE 进阶实战 Servlet、JSP、SpringBoot、MyBatis、项目案例拆解 想快速入门Java Web开发的同学
🔥Java数据结构与算法 图解数据结构、LeetCode刷题解析、大厂面试算法题 面试备战、算法爱好者、计算机专业学生
🔥Redis系列 从数据类型到核心特性解析 项目必备

🚀我的承诺: ✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例

✅ 持续更新:专栏内容定期更新,紧跟技术趋势

✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)


🚀 关注我,解锁更多技术干货! ⏳ 每天进步一点点,未来惊艳所有人!✍️ 持续更新中,记得⭐收藏关注⭐不迷路 ✨

📌 标签:#技术博客  #编程学习  #Java  #C语言  #算法  #程序员

文章目录

  • 前言
  • API接入
  • 本地接入
  • SDK接入
  • 三种接入方式优缺点
    • 选择建议
  • 解决LLM的限制

前言

  前面几篇博客我们分别讲述了RAG、Agents、MCP、Tool Calling、Prompt等属于大语言模型的技术组件,是让原生LLM突破能力限制,落地实际业务的关键技术。而所有应用开发的前提是完成大模型服务对接,不同部署形态对接不同接入方法,这篇博客主要介绍LLM不同的的接入方式。

API接入

  通过HTTP请求直接调用模型服务商提供部署在云端的服务模型,这也是目前最流行、最方便的LLM接入方式,尤其适用于快速开发、集成到现有应用不用管理硬件资源的场景。

接入流程:

  • 注册账号并获取API Key:在模型提供商的平台注册,获取用于身份验证的密钥
  • 阅读API文档:了解请求的端点、参数和发返回的数据格式
  • 构建HTTP请求:在代码中使用HTTP客户端库构建一个包含API Key的请求(API一般在Header中,请求体是JSON格式,包含提示词和相关参数)
  • 发送请求并处理响应:将请求发送到模型提供商指定的API地址,返回解析返回的JSON数据,提取生成的文本。
  • 在这里插入图片描述

    使用postman简单构建一个HTTP请求:   请求头中给出Content-Type和Authorization(API Key),请求体中按照接口文档给出模型的相关参数

    在这里插入图片描述

    在这里插入图片描述 除了这种方式,在代码中的接入文档也有示例: 在这里插入图片描述

    本地接入

    大模型本地部署,这种方式是将开源的大语言模型部署在自己的硬件环境中。 部署流程:

  • 获取模型:从Hugging Face、魔塔社区等平台下载开源模型
  • 准备环境:硬件环境配置要有足够的显存,安装必要的驱动和框架
  • 选择推理框架:Ollama一键拉取和运行模型
  • 启动服务并调用:框架会启动一个本地API服务器,可以像HTTP一样发送请求
  • 一般的笔记本只能安装7b或者8b的模型,感兴趣的同学可以自己玩一玩。

    SDK接入

      严格来讲,SDK 不属于独立的 LLM 接入方案,其本质只是对原生 HTTP 接口调用的上层封装,依附于公有云 API、私有化推理服务这两类基础接入方式。   各大模型厂商会推出适配 Java、Python、Go 等语言的官方 SDK,底层仍然是发送 HTTP/HTTPS 网络请求,只是把鉴权 Header、请求体序列化、异常捕获、流式回调、参数校验等底层逻辑全部封装完毕。   开发者无需手动拼接 curl 请求、处理 JSON 序列化、维护超时与重试逻辑,直接调用面向对象风格的函数 / 方法即可发起对话、工具调用、RAG 相关请求,大幅降低编码成本。

    import os
    from dotenv import load_dotenv
    from openai import OpenAI

    # 加载环境变量
    load_dotenv()

    # 初始化DeepSeek客户端
    client = OpenAI(
    api_key=os.getenv("DEEPSEEK_API_KEY"),
    base_url=os.getenv("DEEPSEEK_BASE_URL")
    )

    def chat_normal():
    response = client.chat.completions.create(
    model="deepseek-v4=-pro", # 对话模型
    messages=[
    {"role": "system", "content": "你是专业AI技术讲师,简洁回答问题"},
    {"role": "user", "content": "解释RAG和Agent的区别"}
    ],
    temperature=0.7,
    max_tokens=1024
    )
    # 打印完整回复
    print(response.choices[0].message.content)

    if __name__ == "__main__":
    chat_normal()

    相比较直接构造HTTP请求,代码更简洁,更易维护。

    三种接入方式优缺点

    为了帮助您根据自身场景选择最合适的接入方式,以下是三种方式的优缺点对比:

    接入方式优点缺点适用场景
    API 接入
    • 开箱即用:无需管理硬件与部署环境。
    • 成本灵活:按使用量付费,初期投入低。
    • 性能稳定:由服务商保障算力与可用性。
    • 持续更新:可快速使用模型的最新版本。
    • 数据出境风险:请求需发送至服务商云端。
    • 网络依赖:依赖公网,延迟和稳定性受网络影响。
    • 长期成本:大规模使用时,累计费用可能较高。
    • 功能受限:受限于服务商提供的 API 功能和速率限制。
    • 快速原型验证。
    • 算力资源有限的中小团队。
    • 对数据隐私要求不高的公开业务。
    • 需要快速迭代和尝鲜新模型能力的场景。
    本地接入
    • 数据安全:模型与数据完全在本地,无泄露风险。
    • 网络零依赖:内网环境可运行,延迟极低。
    • 一次投入:硬件购置后,后续调用无额外费用。
    • 完全可控:可对模型进行定制化微调与深度优化。
    • 硬件门槛高:需要高性能 GPU 和足够显存。
    • 部署复杂:涉及环境配置、驱动安装、框架选型等。
    • 模型更新慢:需手动下载和部署新版本模型。
    • 运维成本:需自行维护硬件和服务的稳定性。
    • 对数据安全和隐私有严格要求的场景(如金融、政务)。
    • 网络隔离或离线环境。
    • 长期、高频调用,且拥有足够硬件预算的团队。
    • 需要对模型进行深度定制或微调的研究与开发。
    SDK 接入
    • 开发高效:封装底层细节,提供简洁的面向对象 API。
    • 功能丰富:通常集成流式输出、工具调用、异步等高级功能。
    • 易于维护:官方维护,兼容性和稳定性有保障。
    • 生态完善:可方便地与 LangChain、LlamaIndex 等框架集成。
    • 本质是封装:其优缺点取决于底层是 API 还是本地服务。
    • 厂商锁定:不同厂商的 SDK 接口可能不兼容。
    • 版本依赖:SDK 版本需要与后端服务版本匹配。
    • 所有使用 API 或本地服务并追求开发效率的场景。
    • 需要快速集成高级功能(如流式对话、函数调用)。
    • 团队项目,需要统一的、易于维护的代码规范。

    选择建议

  • 追求效率与快速启动:优先选择 API 接入,并配合官方 SDK 进行开发。
  • 注重数据安全与长期成本:若具备硬件条件,选择 本地接入,并同样使用 SDK 来简化调用。
  • 混合架构:对于大型企业,可采用混合模式——敏感业务使用本地模型,非敏感或创新业务使用云端 API,均通过统一的 SDK 层进行抽象,以平衡成本、安全与灵活性。
  • 总而言之,SDK 是提升开发体验的最佳实践,而 API 与本地部署则是底层算力来源的路线选择。请根据您的具体需求在“便捷性”、“安全性”、“成本”和“可控性”之间做出权衡。

    解决LLM的限制

    首先明确一个点,所有的LLM都有固定的上下文窗口,我们无法将超过窗口的数据塞给模型;其次模型训练的数据截至它停止训练的那天,模型不能回答私有的数据的问题;最后模型的输出格式不可控,即使我们通过提示词要求模型输出JSON格式,但他仍可能产生错误的内容。

    为了解决这些问题,我们就可以采用前面说过的技术组件,RAG 用来加载私有资料、压缩文本适配上下文窗口;Tool Calling 让模型可以调取外部实时数据,不用局限于训练时的旧知识;再搭配结构化输出约束和 Agent 自检,强制规范返回 JSON 等固定格式,解决输出混乱、解析报错的问题。

    赞(0)
    未经允许不得转载:171主机测评 » 【AI Agent 全栈开发】LLM的接入方式
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址