LangChain-11 Code Writing FunctionCalling 大模型通过编写代码完成需求 大模型计算加法 原创
背景简介
我们知道GPT模型对于内容的输出,是对下一个字符的预测,通过概率选出下一个文本。
而且我们也知道,训练样本是非常庞大的,对于GPT来说,也是有可能学习过1 + 1 = 2
的。
当我们向GPT询问1+1
时,完全可以通过概率来推测出结果是2
但是当我们要求GPT计算:12311111111111111
+ 999999988888888111
时,显然训练样本中不可能出现这么抽象的内容。
那我们该如何让大模型进行计算呢???
安装依赖
pip install --upgrade --quiet langchain-core langchain-experimental langchain-openai
编写代码
提示词内容
"""Write some python code to solve the user's problem.
Return only python code in Markdown format, e.g.:
```python
....
```"""
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import (
ChatPromptTemplate,
)
from langchain_experimental.utilities import PythonREPL
from langchain_openai import ChatOpenAI
template = """Write some python code to solve the user's problem.
Return only python code in Markdown format, e.g.:
```python
....
```"""
prompt = ChatPromptTemplate.from_messages([("system", template), ("human", "{input}")])
model = ChatOpenAI(
model="gpt-3.5-turbo",
)
def _sanitize_output(text: str):
_, after = text.split("```python")
result = after.split("```")[0]
print("---code---")
print(text)
print("---code---")
return result
chain = prompt | model | StrOutputParser() | _sanitize_output | PythonREPL().run
message = chain.invoke({"input": "whats 2 plus 2"})
print(f"message: {message}")
运行代码
我们可以看到,大模型先生成了一段代码,并进行计算,输出了结果。
➜ python3 test11.py
---code---
\```python
result = 2 + 2
print(result)
\```
---code---
Python REPL can execute arbitrary code. Use with caution.
message: 4
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)