第一次调用模型

  |   0 评论   |   0 浏览

你将学会: 调用聊天模型、看清返回值、会 invoke / 简单 stream
还不用: Agent、工具、LangGraph。

一次请求 = 你把消息列表发给模型,它返回一条「助手消息」。

完整代码

复制到仓库根目录 scratch.py

from dotenv import load_dotenv

load_dotenv()

from langchain.chat_models import init_chat_model

model = init_chat_model(
    "deepseek:deepseek-chat",
    temperature=0.5,
    max_tokens=2500,
    timeout=300,
    max_retries=6,
)

print("=== 1. 传一句字符串 ===")
r1 = model.invoke("用一句话解释什么是大语言模型。")
print("类型 =>", type(r1).__name__)
print("content =>", r1.content)
print("content_blocks =>", r1.content_blocks)

print("\n=== 2. 传消息列表(可带系统提示)===")
r2 = model.invoke([
    {"role": "system", "content": "只许用十个字以内回答。"},
    {"role": "user", "content": "什么是 Agent?"},
])
print(r2.content)

print("\n=== 3. 流式:token 陆续出来 ===")
for chunk in model.stream("用五个字形容编程。"):
    print(chunk.content, end="", flush=True)
print()
python scratch.py

你会看到什么

  • 返回类型是 AIMessage,不是普通 str。正文在 .content,分块在 .content_blocks
  • temperature 越高越散;教程里固定 0.5,方便复现。
  • deepseek-chat 是非 thinking 别名。不要用 deepseek-v4-flash 做后面的工具调用。

常见翻车

现象处理
401 / authentication.env 的 key 不对,或没在仓库根目录运行
很慢 / timeout网络问题,timeout=300 已给足;再不行检查代理
想打印 r1 整个对象太长先打印 r1.content

练习

  1. 把系统提示改成「用英文回答」,再问同一个问题。
  2. 连续 invoke 两次:「我叫阿来」然后「我叫什么?」——第二次不会记得。这是正常的:裸模型没有会话记忆。下一课用 Agent + checkpointer 解决。

本章验收

  •  能独立写出 init_chat_model + invoke
  •  知道返回的是 AIMessage
  •  亲眼看过两次 invoke 之间不记名字

对照仓库:02-核心概念/Models模型.py

下一课:第一个 Agent


标题:第一次调用模型
作者:llp
地址:https://llinp.cn/articles/2026/08/23/1787491005788.html