https://python.langchain.com.cn/docs/expression_language/cookbook/code_writing

轻松学:用 LangChain 自动写并执行 Python 代码(降低难度版)

这个链接的核心是教你用 LCEL(LangChain 表达式语言) 搭一条“流水线”——输入一个问题(比如“2加2等于多少”),让 AI 自动写 Python 代码,还能直接运行出结果。全程不用你手动写代码、粘代码,全靠链自动完成。我用“大白话+分步拆解”讲,每个地方都告诉你“为什么要这么做”。

一、先搞懂:学完你能实现什么效果?

简单说,你最终能写出一段代码,运行后输入问题(比如“计算1到10的和”),电脑会自动:

  1. 让 AI 生成解决这个问题的 Python 代码;
  2. 自动清理 AI 输出的代码格式(去掉多余的文字);
  3. 自动运行清理后的代码;
  4. 返回运行结果(比如1到10的和是55)。

二、分步学:从“安装准备”到“跑通代码”

跟着做就行,每一步都标了“作用”,不用记复杂概念。

步骤1:先装需要的“工具包”(依赖库)

就像做饭要先买食材,这里要装 3 个 LangChain 相关的库,分别负责“核心功能”“Python 执行工具”“调用 OpenAI 模型”。
复制下面的命令到你的代码环境(比如 Jupyter、PyCharm)里运行:

# 安装3个必要的库,--quiet 表示安装时不显示多余日志
%pip install --upgrade --quiet langchain-core langchain-experimental langchain-openai
  • langchain-core:LangChain 的核心工具(比如提示模板、输出解析器);
  • langchain-experimental:里面有“Python REPL”(能自动执行 Python 代码的工具);
  • langchain-openai:用来调用 OpenAI 的模型(让 AI 写代码)。

步骤2:准备“流水线”的4个核心零件

这一步是“搭零件”,每个零件都有明确分工,后面会把它们串起来。

零件1:告诉 AI“怎么写代码”的提示模板(Prompt)

AI 不会天生就知道“只写代码、不写废话”,所以要给它一个“规则模板”,明确要求:只返回 Markdown 格式的 Python 代码(比如用 python 和 把代码包起来)。

from langchain_core.prompts import ChatPromptTemplate

# 模板内容:告诉AI“只返回Markdown格式的Python代码,别多写其他话”
template = """编写一些Python代码来解决用户的问题。只返回Markdown格式的Python代码,例如:
```python
....  # 这里写代码

“”"

组合成“系统指令+用户输入”的提示:system是规则,human是用户的问题

prompt = ChatPromptTemplate.from_messages([(“system”, template), (“human”, “{input}”)])



#### 零件2:调用 AI 模型(让 AI 写代码)
用 OpenAI 的模型(比如 gpt-3.5/gpt-4)来生成代码,这里只是“初始化模型”,还没让它干活。
```python
from langchain_openai import ChatOpenAI

# 初始化模型:你需要有OpenAI的API密钥(环境变量里配置好)
model = ChatOpenAI()
零件3:清理 AI 输出的代码(去掉多余格式)

AI 会按模板返回类似这样的内容:

```python
print(2 + 2)
我们需要去掉开头的 ```python 和结尾的 ```,只留下中间的代码(比如 `print(2 + 2)`),不然后面没法运行。这个函数就是干“清理”工作的:
```python
def _sanitize_output(text: str):
    # 第一步:把文本按“```python”分割,取后面的部分(after就是分割后的后半段)
    _, after = text.split("```python")
    # 第二步:再把after按“```”分割,取前面的部分(就是纯代码)
    return after.split("```")[0]
  • 比如 AI 输出是“python print(2+2) ”,清理后就变成“ print(2+2) ”(多余格式没了)。
零件4:自动执行 Python 代码的工具(Python REPL)

“REPL”可以理解成一个“迷你 Python 终端”,能直接把代码字符串扔进去运行,还能返回结果。这里是初始化这个工具:

from langchain_experimental.utilities import PythonREPL

# 初始化Python REPL工具(不用传参数,默认配置就行)
python_repl = PythonREPL()

步骤3:把零件串成“流水线”(构建链)

| 符号把前面的 4 个零件串起来,形成一条“输入问题→输出结果”的完整链。顺序很重要,不能乱!

from langchain_core.output_parsers import StrOutputParser

# 链的顺序:输入问题 → 按模板生成提示 → AI写代码 → 转成字符串 → 清理格式 → 运行代码
chain = prompt | model | StrOutputParser() | _sanitize_output | python_repl.run
  • 逐个解释顺序:
    1. prompt:把用户输入的问题(比如“2加2等于多少”)填进提示模板;
    2. model:AI 按提示生成带格式的代码;
    3. StrOutputParser():把 AI 输出的“消息对象”转成普通字符串(方便后续清理);
    4. _sanitize_output:清理字符串,得到纯代码;
    5. python_repl.run:运行纯代码,返回结果。

步骤4:测试“流水线”(运行链)

输入问题,让链自动干活!

# 调用链:输入“2加2等于多少”,返回运行结果
result = chain.invoke({"input": "2加2等于多少"})
print(result)
  • 运行过程:
    1. AI 生成代码:print(2 + 2)
    2. 清理后还是 print(2 + 2)
    3. 运行代码,输出 4
    4. 最终 result 就是 '4\n'\n 是换行符,不影响结果)。

三、必须注意的风险(文档里也强调了)

Python REPL 能执行 任意 Python 代码——如果输入的问题让 AI 生成了危险代码(比如删除电脑文件、获取隐私),它也会直接运行!所以:

  1. 只给链输入“简单计算、数据处理”这类安全问题;
  2. 不要用它处理未知的、来源不明的输入;
  3. 测试时先看 AI 生成的代码(比如在清理后加个 print(代码) 确认),再运行。

四、核心总结:初学者记3个关键点

  1. 链的顺序不能乱:必须是“提示→模型→解析→清理→运行”,每一步都为下一步做准备;
  2. 清理函数很重要:没有它,AI 输出的带格式代码没法运行;
  3. Python REPL 要慎用:能自动运行代码是方便,但也有安全风险,别瞎输问题。
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐