LangChain Model I/O
Model I/O

模型调用流程
1 写好prompt
2 调用大模型。收入大模型的
3 返回结果,对结果进行解析
一个模型调用的输出作为另外一个模型的输入。把模型调用的输出做预处理再给到下一个模型的输入。
很多时候把输出转化为json给下游的模型

常用接口
同步
invode 一次
batch 批量
stream 流式响应 。 一个字一个字的返回
异步
ainvode
abatch
astream 流式响应 。 一个字一个字的返回
Chat 基本原理
关键属性
1 model 模型
2 messages 消息
3 tools
外部函数的描述要清晰。 因为外部函数很多,大模型要推理出来使用哪个函数
4 tool.choice. null 不走外部函数。 如果是auto,大模型判断要不要调用外部函数
程序把提示词发给大模型,大模型给回复
一、消息类型定义与用途
| 消息类型 | 角色 | 典型内容 | 作用 |
|---|---|---|---|
| SystemMessage | 系统指令或上下文设定 | 设定模型行为、角色、对话规则等 | 引导模型生成风格,提供全局约束(如“你是一个严谨的数学老师”) |
| HumanMessage | 用户输入 | 用户的问题、请求或对话内容 | 触发模型生成回复的直接输入源 |
| AIMessage | AI 模型的回复 | 模型生成的回答、建议或操作建议 | 记录对话历史,维持上下文连贯性 |
例子:
ali_llm.py 定义
from langchain_openai import ChatOpenAI
import os
def create_llm() -> ChatOpenAI:
"""创建并返回配置好的大模型实例"""
return ChatOpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY") or "your_api_key_here",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
model="qwen2.5-math-7b-instruct"
)
测试代码
from langchain_core.prompts import ChatPromptTemplate
from ali_llm import create_llm
chat_template = ChatPromptTemplate.from_messages(
[
("system", "你是一个有帮助的AI机器人,你的名字是{name}。"),
("ai", "我很好,谢谢!"),
("human", "{user_input}"),
]
)
messages = chat_template.format_messages(name="小明", user_input="你叫什么名字?")
llm = create_llm()
response = llm.invoke(messages)
print(response.content)
few show -- 提示词让大模型有规划能力
如果模型推理能力弱的大模型,你给他一个复杂的问题,他回答不好。所以我们需要通过few show拆解步骤。
大概步骤
1 准备好问题,拆解的步骤
2 组装成提示词模板+用户的提的问题给到大模型
开发流程
原理:大模型针对复杂的问题,并不具备很好的规划能力(目前阶段是这样)。我们针对不同的场景,提供不同提示词(问题,拆解步骤和答案)+ 用户的问题给到大模型,
让模型参考学习,并在同一个prompt的末尾提出新的问题,依次提升模型的推理能力。
比如做一个智能报表系统
场景1 :查询用户表的数量
场景2:查询用户表的userid为123的记录
场景3:分析这个月的销量
我们要把这3个场景的问题拆解好步骤和答案后,连同用户的问题给到大模型,大模型才能给到准确的回答。否则一些推理能力不是很强的大模型,他回答不清楚。
1。准备好不同场景的提示词 ,可能有几百个,甚至几千个
2. 用户发起问题 (用户)
3. 基于语义相似度等挑选部分提示词(可能只有几个)+ 用户问的问题,一起给到大模型 (目的:减少token,提高效率,降费用)
4. 大模型给答案,cache回答的内容
5. 用户进一步问问题
6. 循环3,+上次回答的内容一起给到大模型
功能
Chat Model
通过 ChatPromptTemplate,FewShotChatMessagePromptTemplate 简化模板替换工作
ChatPromptTemplate
提示词模板选择器
https://python.langchain.com/v0.1/docs/modules/model_io/prompts/example_selectors/
Function call
定义和大模型交互的函数入参尽量为字符串
函数说明书
sunwukong={
"type": "function",
"function": {"name": "sunwukong_function",
"description": "用于执行孙悟空算法函数,定义了一种特殊的数据集计算过程",
"parameters": {"type": "object",
"properties": {"data": {"type": "string",
"description": "执行孙悟空算法的数据集"},
},
"required": ["data"],
},
}
}
parameters: 如果参数是数组写数组,除了数组外 就写object
properties: 对参数的描述

浙公网安备 33010602011771号