资讯动态

【零基础入门 LLM 开发 · Day 10】:LangChain 入门——一条管道符串起 prompt 和模型

发布时间:2026/10/9 5:26:21 来源:尧图企业网站定制
【零基础入门 LLM 开发 · Day 10】LangChain 入门——一条管道符串起 prompt 和模型前九天苦在哪用原生 SDK 九天下来你可能已经发现每次都要手写 client 初始化、手拼 messages 列表、手取choices[0].message.content……这些都是重复劳动。LangChain 就是把这些重复劳动打包成积木的框架prompt 是积木、模型是积木你用管道符把它们串成流水线。安装与三个包名pipinstalllangchain-openai初学者最容易晕的包名关系langchain-core核心抽象PromptTemplate、消息类型、LCEL装别的会自动带上langchain-openaiOpenAI 系模型的接入层langchain全家桶含各种链、Agent 等。完整代码importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplate load_dotenv()# 初始化模型对比 Day 1参数类似但不再需要手写 clientllmChatOpenAI(modelos.getenv(YUMC_MODEL_NAME),api_keyos.getenv(YUMC_MODEL_API_KEY),base_urlos.getenv(YUMC_MODEL_BASE_URL),temperature0.7,)# 提示词模板{user_input} 是变量占位符promptChatPromptTemplate.from_messages([(system,你是一个由YumCode 驱动的智能助手.),(human,{user_input})])# LCEL用管道符把积木串成链chainprompt|llmif__name____main__:try:responsechain.invoke({user_input:你好请简单介绍一下你自己})print(-----模型回复-----)print(response.content)exceptExceptionase:print(f调用失败{e})print(提示请检查 .env 中的URL 是否可以在当前网络环境下访问。)逐段拆解①ChatPromptTemplate.from_messages用元组列表定义多角色提示词(system, ...)/(human, ...)。{user_input}是占位符调用时填值——这就是模板人设写一次问题每次换。②chain prompt | llm今天的核心这是 LangChain 最出名的语法LCELLangChain Expression Languageprompt | llm读作prompt 的输出流进 llm 当输入类似 Linux 管道cat 文件 | grep 关键词数据流向{user_input: ...}→ 模板填空变成完整 messages → 交给模型 → 返回结果。以后链子可以越接越长prompt | llm | 输出解析器 | 另一个模型——流水线思维。③chain.invoke(...)统一入口传一个字典键就是模板里的占位符名。返回的response.content和 Day 1 一样只是不用再翻choices[0]了。④try/except网络请求随时可能失败正式代码永远包一层异常处理别让用户看到红色堆栈。原生 SDK vs LangChain 对照表任务原生 SDKDay 1-9LangChain今天起初始化模型OpenAI(api_key, base_url)ChatOpenAI(model, api_key, base_url)组装对话手拼messages列表ChatPromptTemplate模板调用client.chat.completions.create(...)chain.invoke({...})取回复resp.choices[0].message.contentresponse.content今日踩坑点占位符是单花括号{user_input}Day 13 会遇到要输出 JSON 的情况那时花括号必须写成{{ }}转义——先记住这颗雷。chain.invoke传的不是字符串而是字典invoke(你好)会报错键名必须和占位符一致。model 参数忘了配ChatOpenAI不传 model 会有默认值gpt-3.5 之类连你自己的服务会 404。今日小练习必做把 system 改成你想要的助手人设再给模板加一个{style}占位符控制语气如正式/“沙雕”。进阶用原生 SDK 重写一遍同样的功能对比两种写法的代码量体会框架到底帮你省了什么。明日预告Day 11LangChain 的流式输出——比 Day 5 手动拼 delta 简单得多一行for搞定。附录完整练习代码langchainTest.pyimportosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplate#加载环境变量load_dotenv()# 初始化模型llmChatOpenAI(modelos.getenv(YUMC_MODEL_NAME),api_keyos.getenv(YUMC_MODEL_API_KEY),base_urlos.getenv(YUMC_MODEL_BASE_URL),temperature0.7,)promptChatPromptTemplate.from_messages([(system,你是一个由YumCode 驱动的智能助手.),(human,{user_input})])chainprompt|llmif__name____main__:try:responsechain.invoke({user_input:你好请简单介绍一下你自己})print(-----模型回复-----)print(response.content)exceptExceptionase:print(f调用失败{e})print(提示请检查 .env 中的URL 是否可以再当前网络环境下访问。)

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑