LangChain学习笔记day01

LangChain学习笔记day01

引言:LangChain 是什么

LangChain 是一个用于构建大模型应用的开发框架,核心能力包括:

  • 统一大模型调用接口(可切换 OpenAI / DeepSeek / 本地模型)
  • Prompt 模板系统(PromptTemplate / ChatPromptTemplate)
  • 文档加载与处理(Loader + Text Splitter)
  • 工具与 Agent 系统(搜索、数据库、API调用等)
  • LCEL(LangChain Expression Language)链式编排能力


1. 选择接入大模型的方式

API 模型

langchain-openai + deepseek API
  • 云端大模型性能更佳
  • deepseek token价格较低,且 API 兼容 openai API 调用

本地模型

Ollama + langchain-ollama
  • 不依赖网络,不消耗token
  • 适用于调试数据


2. 环境搭建

① 创建项目

  • pycharm 创建项目
  • git init 初始化仓库
  • 配置 .gitignore
  • uv init 初始化依赖管理

② 安装依赖

uv add langchain langchain-openai langchain-ollama python-dotenv
  • langchain:核心框架(Prompt / Chain / Agent)
  • langchain-openai:OpenAI / DeepSeek 等 API 适配
  • langchain-ollama:本地模型接入
  • python-dotenv:读取 .env 环境变量

③ 配置API Key

创建.env文件,将从deepseek官网创建的api_key以键值对形式填入

OPENAI_API_KEY=xxx

④ 加载环境变量

from dotenv import load_dotenv
load_dotenv()


3. Hello World(LangChain 基础流程)

(1) 导入组件

from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI

PromptTemplate(核心)

作用

延迟填充变量的 Prompt 模板系统

示例
from langchain_core.prompts import PromptTemplate

template = """
以下是一段信息:{information}
请总结:
"""

prompt = PromptTemplate(
    input_variables=["information"],
    template=template
)

information = "LangChain是一个框架"

template中的 {information} 是个占位符,用于给一个名叫“information”的变量占位;

input_variables是个变量清单,用于声明这个template需要一个叫“information”的变量;

最外部的information为实际数据

其中template和input_variables中的“information”必须同名,而实际数据不一定要命名为“information”,它与前二者之间的映射关系在chain执行时通过参数字典构建。

f-string vs PromptTemplate
类型 特点
模板占位符,运行时填充
f-string 定义时立即替换,无法托管
PromptTemplate 延迟绑定(用于LLM)

ChatOpenAI

作用

将大模型 API 封装为 LangChain 可调用对象(Runnable)

示例
model = ChatOpenAI(
    model="...",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    # api_key="...",
    # base_url="...",
    # organization="...",
    # other params...
)

(2) 编写PromptTemplate

game1 = "鸣潮"
game2 = "原神"

template = "请简要告诉我游戏{game}主要讲了一个什么样的故事。"

prompt_template = PromptTemplate(
    input_variables=["game"],
    template=template
)

(3) 实例化大模型

llm = ChatOpenAI(
    model="deepseek-v4-flash",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    base_url="https://api.deepseek.com",
    # api_key="...",
    # organization="...",
    # other params...
)

(4) 创建链式调用

chain = prompt_template | llm
response1 = chain.invoke(input={"game": game1})
print(response1.content)
response2 = chain.invoke(input={"game": game2})
print(response2.content)

⭐LangChain Expression Language(LCEL)

作用

通过"|"连接多个 Runnable 组件,"|"左侧组件的输出将转化为右侧组件的输入,以此形成一条可执行流水线(Runnable Chain)

示例
chain = prompt | llm | tools | ...

执行chain

result = chain.invoke(input={"information": information})
  • chain:可执行流水线(Runnable Chain)
  • chain.invoke(...):运行该链
  • input={"information": information}:参数字典,左侧key对应PromptTemplate 里的变量,右侧value对应外部定义的变量
  • result:返回结果,其内容取决于chain的最后一个组件
执行逻辑

① 输入 dict

② 填充 PromptTemplate

③ 发送给 Chain

④ 返回结果


(5)主要代码及运行结果

代码
def main():
    game1 = "鸣潮"
    game2 = "原神"

    template = "请简要告诉我游戏{game}主要讲了一个什么样的故事。"

    prompt_template = PromptTemplate(
        input_variables=["game"],
        template=template
    )

    llm = ChatOpenAI(
        model="deepseek-v4-flash",
        temperature=0,
        max_tokens=None,
        timeout=None,
        max_retries=2,
        base_url="https://api.deepseek.com",
        # api_key="...",
        # organization="...",
        # other params...
    )

    chain = prompt_template | llm
    response1 = chain.invoke(input={"game": game1})
    print(response1.content)
    response2 = chain.invoke(input={"game": game2})
    print(response2.content)

运行结果

《鸣潮》的故事发生在一个被神秘灾难“悲鸣”摧毁又重生的末世世界。玩家扮演的是失去记忆的“漂泊者”,在苏醒后踏上寻找自我、对抗名为“残像”的怪物、并揭开世界背后真相的旅程。核心冲突围绕着掌握特殊力量“共鸣”的“共鸣者”与旧世界的统治者“鸣式”之间的争斗展开,主角还将面临关于世界毁灭与循环的深层抉择。
《原神》的主线故事围绕一对来自世界之外的双子旅行者展开。他们本要离开提瓦特大陆,却被一位神秘的“天理”维系者拦截,其中一人被带走。你扮演的(另一位双子)在沉睡了五百年后苏醒,为了寻找失散的亲人,踏上了穿越七国的旅途。

在这个过程中,你将结识拥有神之眼、能操控元素力的各色伙伴,帮助每个国家解决危机(如蒙德的龙灾、璃月的魔神骚动、稻妻的眼狩令等),并逐渐发现提瓦特大陆隐藏的真相:这是一个被“天理”统治、坎瑞亚古国被覆灭、世界循环往复的棋盘。剧情核心是旅行者的寻亲之旅对抗天理、揭开世界真相的史诗。

目前故事已推进至第五个国家枫丹(水之国),但七国的主线仍未完结,寻找亲人的旅途还在继续。


posted on 2026-06-22 18:39  AQHuiguang  阅读(4)  评论(0)    收藏  举报

导航