LangChain快速入门
一、快速上手
1、安装OpenAI包
pip install -U langchain-openai
2、定义大模型,由于我们使用的是openAI可以兼容deepseek,我们用deepseek即可
key = os.environ.get('DEEPSEEK_API_KEY')
model = ChatOpenAI(
model='deepseek-v4-flash',
base_url='https://api.deepseek.com',
api_key=key
)
message = [ HumanMessage(content='apple'), SystemMessage(content='帮我翻译单词'), ]
4、调用大模型
result = model.invoke(message)
print(result)
输出结果(调试可以看⻅ result 类型为 AIMessage)
content='苹果'additional_kwargs={'refusal': None}
response_metadata={'token_usage': {'completion_tokens': 46, 'prompt_tokens': 8, 'total_tokens': 54, 'completion_tokens_details': {'accepted_prediction_tokens': None, 'audio_tokens': None, 'reasoning_tokens': 44, 'rejected_prediction_tokens': None}, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 0}, 'prompt_cache_hit_tokens': 0, 'prompt_cache_miss_tokens': 8}, 'model_provider': 'openai', 'model_name': 'deepseek-v4-flash', 'system_fingerprint': 'fp_058df29938_prod0820_fp8_kvcache_20260402', 'id': 'cfcfbb3a-25e7-475e-92e7-505c07ce9dac', 'finish_reason': 'stop', 'logprobs': None} id='lc_run--019dfd36-15e5-7b22-bbc4-3d5cdfbe47c2-0' tool_calls=[] invalid_tool_calls=[]
usage_metadata={'input_tokens': 8, 'output_tokens': 46, 'total_tokens': 54, 'input_token_details': {'cache_read': 0}, 'output_token_details': {'reasoning': 44}}
- AIMessage :来自AI 的消息。从聊天模型返回,作为对提示(输⼊)的响应。
- content :消息的内容。
- additional_kwargs :与消息关联的其他有效负载数据。对于来⾃ AI 的消息,可能包括模 型提供程序编码的⼯具调⽤。
- response_metadata :响应元数据。例如:响应标头、logprobs、令牌计数、模型名称。 侧重于 “响应”本⾝的信息,⽐如这次请求的 ID、使⽤的模型版本、以及服务提供商返回 的所有原始元数据。它主要⽤于调试、⽇志记录和获取请求的上下⽂信息。
- usage_metadata :消息的使⽤元数据,例如令牌计数。 侧重于 “资源消耗”的量化信息,即这次请求消耗了多少 Token。它主要⽤于成本计算、监控和预算控制
5、输出解析
若只想输出聊天模型返回的结果字符串,可以使⽤ StrOutputParser 输出解析器组件,将⼤模型输出结果解析为最可能的字符串。核心代码
parse = StrOutputParser()
content = parse.invoke(result)
print(content)
运行结果:
苹果
6、链式执行
我们进行完上述操作,并没有发现链式调用的过程,对于 LangChain,它给我们提供了链式执⾏的能⼒,即我们只需要定义各个“组件”,将它们“链起来”,⼀次性执行即可得到最终效果。
#定义大模型
key = os.environ.get('DEEPSEEK_API_KEY')
model = ChatOpenAI(
model='deepseek-v4-flash',
base_url='https://api.deepseek.com',
api_key=key
)
#定义消息
message = [
HumanMessage(content='apple'),
SystemMessage(content='帮我翻译单词'),
]
#定义解析工具
parse = StrOutputParser()
#定义链
chain = model | parse
#执行链
print(chain.invoke(message))
运行结果:

二、LangChain相关概念
1、Runnable 接口
概念说明:
Components(组件):⽤来帮助当我们在构建应⽤程序时,提供了⼀系列的核⼼构建块,例如语⾔模型、输出解析器、检索器、编译的 LangGraph 图等。
- Invoked(调用): 单个输入转换为输出。
- Batched(批处理): 多个输入被有效地转换为输出。
- Streamed(流式传输): 输出在生成时进行流式传输。
- Inspected(检查): 可以访问有关 Runnable 的输入、输出和配置的原理图信
- Composed(组合): 可以组合多个 Runnable,可以使用LCEL 协同工作以创建复杂的管道。
2、LangChain Expression Language
三、聊天模型核心能力
1、定义聊天模型
- 在 LangChain 的官方文档中,认为 LLM 大多数是纯文本补全模型。这些纯文本模型封装的 API 接受⼀个字符串提示作为输入,并输出⼀个字符串补全结果,OpenAI 的 GPT-5 就是作为 LLM 来实现的。
- LangChain 中的聊天模型通常由 LLM 提供⽀持,但经过专门调整以用于对话。关键在于,它们不是接受单个字符串作为输入,二是接受聊天消息列表,并返回⼀条 AI 消息作为输出。
1.1、通过 API 定义聊天模型
1.1.1、方式1:ChatOpenAI
|
参数名称
|
参数描述
|
|
model
|
要使⽤的 OpenAI 模型的名称
|
|
temperature
|
采样温度,温度值越高,AI 回答越离谱;温度越低,回答越保守靠谱。 |
|
max_tokens
|
要⽣成的最⼤令牌数
|
|
timeout
|
请求超时时间
|
|
max_retries
|
最⼤重试次数
|
|
openai_api_key / api_key
|
OpenAI API 密钥。如果未传⼊,将从环境变量中读取 OPENAI_API_KEY
|
|
base_url
|
API 请求的基本 URL
|
| 。。。。 |
model = ChatOpenAI(
model='deepseek-v4-flash',
base_url='https://api.deepseek.com',
api_key=os.environ.get('DEEPSEEK_API_KEY')
)
1.1.2、invoke() 调用
方法定义
abstractmethod invoke(
input: Input,
config: RunnableConfig | None = None,
**kwargs: Any,
) → Output
请求参数:
input :输⼊⼀个 Runnable 实例
config (默认空):⽤于 Runnable 的配置。
返回值: 返回⼀个 Runnable 实例
|
参数名
|
参数描述
|
|
configurable
|
通过 .configurable_fields()在此 Runnable 或⼦ Runnable 上配置的属性的运⾏时值。
|
|
run_id
|
针对此调⽤运⾏的跟踪器的唯⼀标识符。如果未提供,将⽣成新的 UUID。
|
|
run_name
|
此调⽤的跟踪器运⾏的名称。默认为类的名称。
|
|
metadata
|
此次调用和任何子调用的元数据。键是字符串,值是 JSON。
类型:dict[str, Any]
|
调用
print(model.invoke("你是谁"))
调用结果:

1.1.3 ⽅式2:init_chat_model
langchain.chat_models.base.init_chat_model(
model: str,
*,
model_provider: str | None = None,
configurable_fields: Literal[None] = None,
config_prefix: str | None = None,
**kwargs: Any,
) → BaseChatModel
|
参数名
|
参数描述
|
|
model
|
要使⽤的模型的名称
|
|
model_provider
|
模型提供⽅。⽀持的 model_provider 值和相应的集成包有:
如果未指定,将尝试从模型推断 model_provider。
|
|
configurable_fields
|
设置哪些模型参数是可配置的。若配置为:
|
|
config_prefix
|
|
|
temperature
|
采样温度,温度值越高,AI 回答越离谱;温度越低,回答越保守靠谱
|
|
max_tokens
|
要生成的最大令牌数
|
|
timeout
|
请求超时时间
|
| 。。。 |
init_chat_model() 返回值说明:
函数返回⼀个与指定的 model_name 和 model_provider 相对应的 BaseChatModel (如ChatOpenAI , ChatAnthropic 等)。注意要是模型可配置,则返回⼀个聊天模型模拟器,该模拟器在传入配置后,于运行时才会初始化底层模型
1、基本用法
deeoseek_model = init_chat_model(model='deepseek-v4-flash',
model_provider='deepseek',
base_url="https://api.deepseek.com"
)
print(deeoseek_model.invoke("你是谁"))
运行结果:

2、创建可配置的模型
deepseek_model = init_chat_model(temperature=0)
result = deepseek_model.invoke(
input="你是谁",
config={
"configurable":{
"model":"deepseek-chat",
}
}
).content
print(result)
调用结果:

3、创建具有默认值的可配置模型
deepseek_model = init_chat_model(
model="deepseek-v4-flash",
model_provider="deepseek",
base_url="https://api.deepseek.com",
max_tokens=1024,
configurable_fields=("model",),
config_prefix="first",
)
result = deepseek_model.invoke(
input="你是谁",
)
print(result)
改后
result = deepseek_model.invoke(
input="你是谁",
config={
"configurable":{
"first_model":"deepseek-v4-pro"
}
}
)
改前
![]()
改后
![]()
1.2 通过本地部署的 LLM 定义聊天模型
首先在自己的电脑上需要有一个本地模型

调用代码
from langchain_ollama import ChatOllama
model = ChatOllama(model="deepseek-r1:1.5b",base_url="http://localhost:11434")
print(model.invoke("你是谁"))
调用结果

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)