发布时间:2026/7/16 8:25:32
调用大模型的两种方法 调用方法一response client.chat.completions.create( modelkimi-k2.6, messages[ { role: system, content: 你是 SQL 专家只输出 JSON不要输出其他内容。, }, {role: user, content: prompt}, ], temperature0.2, # SQL 生成需要高度确定性 )调用方法二intent llm.invoke(classification_prompt).content.strip().lower()两者本质都是调用大模型最终发往模型服务的请求是完全一致的区别只在于抽象层级和封装程度不同第一个是直接调用模型厂商的原生 API 接口所有请求参数都需要手动组装精细度高、可控性强第二个是调用 LangChain 框架封装好的模型对象框架底层帮你自动完成了参数组装、格式转换写法更简洁。一、第一种原生 SDK 调用generate_sql函数你看到的client.chat.completions.create 完整messages数组是大模型厂商提供的标准 OpenAI 兼容接口的原生写法。1. 为什么必须写完整的messages结构这是大模型 Chat Completions 接口的强制要求模型本身是对话式的必须通过role角色来区分消息身份system系统指令 / 人设、user用户输入、assistant模型回复原生接口不会帮你做任何格式封装你必须严格按照接口规范手动把所有对话内容组装成列表传进去2. 为什么这个函数要用原生写法这个场景有两个强需求原生调用更合适强格式约束需求生成 SQL 并输出 JSON对输出稳定性要求极高需要单独的system角色来给模型强人设、强规则单独的 system 指令比混在用户提示里的约束效果更好精细参数控制需要手动指定模型名称kimi-k2.6、调低temperature0.2还要拿到最原始的响应结构后续手动做 JSON 提取、异常捕获、格式清洗原生调用能拿到完整的响应对象灵活度最高二、第二种LangChain 封装调用run_data_analysis函数你看到的llm.invoke(分类提示词)是LangChain 框架对大模型调用的高层封装。1. 为什么一句话就能完成调用llm是提前初始化好的 LangChain 模型对象比如ChatOpenAI/ChatMoonshot它的invoke()方法底层帮你做了这些重复工作自动把你传入的字符串包装成[{role: user, content: 你的提示词}]的标准 messages 格式自动携带初始化时配置好的模型名、temperature、API Key 等参数自动解析响应直接返回模型的文本内容不用你再写.choices[0].message.content去取值相当于把原生调用里的「组装参数 → 发请求 → 提取结果」三步封装成了一步。2. 为什么这个函数可以用简化写法意图分类是非常简单的单轮场景不需要复杂的多角色对话分类规则直接写在用户提示词里也能正常工作不需要精细控制每一个请求参数复用全局初始化的模型配置即可只需要拿到纯文本结果做分支判断不需要处理复杂的响应结构同时这个函数后续还要对接 LangChain 的 Agent统一用 LangChain 的接口写法和生态组件的兼容性更好三、两种写法的对比与选型表格维度原生 SDK 调用LangChain 封装调用抽象层级底层直接对接模型接口高层框架封装屏蔽细节代码量多需手动组装所有参数少一行完成调用可控性极高所有参数可精细调整中等常用参数已封装格式灵活性强适合自定义解析、异常处理弱统一返回标准格式适用场景结构化输出、多轮对话、强格式约束简单单轮请求、快速开发、对接 Agent 生态四、补充LangChain 也支持完整角色写法不是 LangChain 不能加 system 角色而是这个场景不需要所以用了最简写法。如果需要LangChain 也可以和原生一样传多角色消息python运行from langchain_core.messages import SystemMessage, HumanMessage # 和原生写法效果完全等价 response llm.invoke([ SystemMessage(content你是分类专家只输出一个单词), HumanMessage(contentclassification_prompt) ]) intent response.content.strip().lower()最后总结没有哪种写法绝对更好完全由场景决定需要稳定、精准、自定义解析→ 用原生调用需要简洁、快速、和框架生态联动→ 用封装调用两者底层最终发往大模型的 HTTP 请求本质是完全一样的。

相关新闻

2026/7/16 8:25:32

从LLM到Agent:ReAct推理模式的底层原理

从LLM到Agent:ReAct推理模式的底层原理 你用过ChatGPT,但你有没有想过:为什么它能回答"今天天气怎么样",却没法真的帮你查天气?这篇文章从零开始,带你理解"聊天机器人"和"智能助手…

2026/7/16 8:20:32

安卓修改大师对luac文件多版本加密与解密深度解析

安卓修改大师对luac文件多版本加密与解密深度解析 一、引言:luac文件在安卓应用中的特殊地位 在安卓应用逆向工程领域,luac文件是一个特殊而重要的存在。Lua作为一门轻量级、高效的脚本语言,被广泛应用于移动游戏开发、应用逻辑扩展、配置管…

2026/7/16 9:20:36

Witty-Insight性能优化:Rust与eBPF的高效数据采集与处理

Witty-Insight性能优化:Rust与eBPF的高效数据采集与处理 【免费下载链接】witty-insight The witty-insight is an eBPF-based observability framework for tracing agent execution pipelines. 项目地址: https://gitcode.com/openeuler/witty-insight 前往…

2026/7/16 9:20:36

Windows系统下Elasticsearch的完整部署与安全配置实战

1. 环境准备与基础安装 在Windows系统上部署Elasticsearch前,需要先搭建好Java运行环境。Elasticsearch 8.x版本要求JDK 17及以上版本,这里推荐使用OpenJDK。你可以从Adoptium官网下载Windows版的JDK安装包,选择.msi格式的安装程序&#xff0…

2026/7/16 9:20:36

游戏内存修改技术详解:从Cheat Engine原理到《财富磨坊》实战

财富磨坊游戏修改指南:从资源困境到自由探索的技术实现 还在为《财富磨坊》三周目后商店价格暴涨而苦恼吗?当你发现辛苦攒下的金币连基础道具都买不起时,游戏体验确实会大打折扣。本文要解决的核心问题就是:如何通过技术手段重新获…

2026/7/16 9:20:36

Windows安全日志取证:利用Log Parser精准追踪入侵痕迹

1. Windows安全日志取证基础 Windows安全日志就像系统的"黑匣子",记录着所有关键操作痕迹。我处理过不少安全事件,发现90%的入侵行为都会在日志中留下蛛丝马迹。安全日志默认存储在 %SystemRoot%\System32\Winevt\Logs\Security.evtx &#…

2026/7/16 9:15:35

从数据封装到网络通信:TCP/IP协议栈各层数据单元格式详解

1. TCP/IP协议栈与数据封装概述 当你用手机刷微博或者用电脑看视频时,数据就像快递包裹一样在网络中穿梭。TCP/IP协议栈就是这套"快递系统"的操作手册,它把数据打包成不同规格的箱子,确保它们能准确送达。想象你要寄一份手写信给朋…

2026/7/15 17:04:06

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/15 22:21:34

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/15 23:18:22

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/16 0:04:06

AD9215BRUZRL7-105是一款工业 10bit 流水线模数转换器

型号介绍AD9215BRUZRL7-105 是一款10 位单通道高速流水线模数转换器,它采用模拟单电源独立供电 数字驱动分离供电双电源架构,模拟电源 AVDD 额定 3V,允许工作区间 2.7V~3.3V;数字驱动电源 DRV 独立设计,支持 2.25V~3.…

2026/7/16 0:04:06

LTC4418IUF#TRPBF是一款工业级双通道控制器

型号介绍LTC4418IUF#TRPBF 是一款工业级双通道电源路径控制器,它芯片采用 20 引脚 4mm4mm QFN 封装,底部附带外露散热焊盘作为 21 号 GND 引脚,热阻 θJA 为 47℃/W、θJC 仅 4.5℃/W,散热性能适配大功率切换场景;温区…

2026/7/16 0:04:06

uos-exporter核心组件解析:10个关键监控导出器功能详解

uos-exporter核心组件解析:10个关键监控导出器功能详解 【免费下载链接】uos-exporter uos-exporter collects metrics from os 项目地址: https://gitcode.com/openeuler/uos-exporter 前往项目官网免费下载:https://ar.openeuler.org/ar/ uos-…

2026/7/15 13:36:32

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…