基于LCEL实现自动编写并执行Python代码

PythonREPL组件能够运行python代码,比如以下代码:

PythonREPL().run('print(12*9)')

实现的基本思路:

  1. 获取用户的提问
  2. 通过提示词工程让大模型输出提问对应的python代码
  3. 从回答中提取纯python代码
  4. 把纯python代码丢给PythonREPL组件去运行
  5. 输出代码执行结果

以下是代码实现:

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_community.chat_models import ChatTongyi
from langchain_core.runnables import RunnableLambda
from langchain_experimental.utilities import PythonREPL

# 创建一个大模型
llm = ChatTongyi()

# 创建一个让大模型编写代码的提示词模板
template_code = """请通过编写Python代码来回答对应问题。此问题是:{question}
注意仅需要通过Python代码回答,不要添加其他说明文字。
代码示例如下:
‍```python
result = 2 * 8
print(result)
‍```
"""
# 大模型回答的代码不能直接用,用get_code方法处理成纯python代码
def get_code(x):
    return x.split("‍```python")[1].split("‍```")[0]

# 创建一个提示词
prompt = PromptTemplate.from_template(template_code)

# 创建一个自定义链
chain_code = prompt | llm | StrOutputParser() | RunnableLambda(get_code) | PythonREPL().run
print(chain_code.invoke({"question":"99除于4等于几?结果保留2位小数点"}))
# Output >> 24.75
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值