【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案

  • 大家好,我是同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:

在这里插入图片描述


本文通过一个案例来学习下如何让 LangChain 写代码并自动执行输出结果。

本文案例来自:https://python.langchain.com/docs/expression_language/cookbook/code_writing

0. 完整代码

先来跑通demo代码

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()

def _sanitize_output(text: str):
    _, after = text.split("```python")
    return after.split("```")[0]

chain = prompt | model | StrOutputParser() | _sanitize_output | PythonREPL().run

result = chain.invoke({"input": "whats 2 plus 2"})

print(result)

执行结果:

在这里插入图片描述

1. 代码学习

这段代码实现的功能:当接收到用户提问时,通过调用大模型来写Python代码,通过执行Python代码输出Python代码的运行结果。上面的demo中,用户提问2+2等于几,Python程序执行结果为4。

案例很简单,但也有值得学习的地方。

(1)首先是前面的传统chain部分,prompt | model | StrOutputParser 就是将用户提问和系统设定的Prompt给到大模型,然后大模型输出结果,通过StrOutputParser将结果转换成字符串格式。

StrOutputParser 的作用:将大模型的输出转换成字符串格式。如果是LLM的返回,保持原样(LLM的返回本来就是字符串),如果是ChatModel的返回,它会输出.content 中的信息作为结果字符串。

在这里插入图片描述
这里面可以重点关注下给系统设定的Prompt:限定了只输出Python代码,并且用Markdown的形式,并且还给了输出格式的例子。最大限度地保证大模型输出地Python代码是可以运行的。

template = """Write some python code to solve the user's problem. 

Return only python code in Markdown format, e.g.:

```python
....
```"""

(2)_sanitize_output 函数,将大模型输出的Markdown格式的Python代码提取出来,其实这里就是去掉前面的 “```python” 和后面的 “```”。所以,前面的Prompt就显得至关重要了,一定将输出格式限制死了,有一点不对就会提取Python代码出错。

(3)PythonREPL().run ,从代码中也能猜出它就是用来在内部运行 Python 程序的,它是LangChain封装的一个用来执行Python代码的类。

run 函数的几个注意点:

  • 参数为完整的要执行的Python代码
  • 其返回结果为 Python 代码中通过 print 函数打印的内容,如下示例代码,print(1+1),才能返回2。
from langchain_experimental.utilities import PythonREPL
python_repl = PythonREPL()
python_repl.run("print(1+1)") # 有返回值,2

python_repl.run("print(1+1)") # 无返回值,空的

本文中demo程序生成的Python代码,有使用 print

在这里插入图片描述
看下PythonREPL的源码,原理很简单,就是调用了一下 exec 函数执行代码,然后将标准输出中的内容放到队列中。执行完之后 return queue.get(),将标准输出内容作为结果返回。

所以从源码也可以知道,它不止会返回 print 打印出来的内容,任何输出到标准输出中的信息它都会返回,例如程序报错、警告等。
在这里插入图片描述

本文到这里就结束了。通过本文,我们主要是学习了如何让大模型写Python程序并自动执行。其实最大的收获就是知道了有 PythonREPL 这么个东西,更深一点知道了 PythonREPL 的运行原理,后面即使不用LangChain,也能自己写一段类似的功能。

如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~


  • 大家好,我是同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:

在这里插入图片描述

  • 16
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 很抱歉,作为AI语言模型,我无法提供代码。但是,我可以为您提供一些思路和建议: 1. 首先,您需要使用OCR技术(光学字符识别)来识别图片中的文字。Python中有很多OCR库可以使用,例如Tesseract、pytesseract等。 2. 识别出来的文字可以保存在一个字符串中,然后使用Python中的pandas库来生成Excel文件。您可以将识别出来的文字存储在一个列表中,然后将其转换为pandas的DataFrame对象,最后使用to_excel()方法将其保存为Excel文件。 3. 在生成Excel文件之前,您可能需要对识别出来的文字进行一些处理,例如去除空格、换行符等。这可以使用Python中的字符串处理函数来完成。 希望这些思路和建议能够帮助您完成任务。祝您好运! ### 回答2: 使用Python进行图片文字识别和生成Excel可以使用Tesseract OCR和openpyxl库来实现。 首先,需要安装Tesseract OCR和openpyxl库。可以使用pip命令进行安装: ``` pip install pytesseract pip install openpyxl ``` 接下来,导入所需库和模块: ```python import pytesseract from PIL import Image from openpyxl import Workbook ``` 然后,加载待识别的图片: ```python image_path = 'image.jpg' # 图片路径 image = Image.open(image_path) ``` 接下来,使用Tesseract OCR进行图片文字识别: ```python result = pytesseract.image_to_string(image, lang='eng') ``` 最后,使用openpyxl库将识别结果入Excel文件: ```python excel_path = 'result.xlsx' # Excel文件路径 wb = Workbook() # 创建Workbook对象 ws = wb.active # 获取活动的Worksheet ws['A1'] = result # 将识别结果入A1单元格 wb.save(excel_path) # 保存Excel文件 ``` 以上代码将识别的文字结果存储在Excel文件的A1单元格,并保存为result.xlsx文件。 请注意,这只是一个简单的例子。实际应用中可能需要对识别结果进行进一步处理和整理。 ### 回答3: 使用Python识别图片文字并生成Excel的代码可以借助于Tesseract OCR库和openpyxl库进行实现。下面是一段示例代码: 首先,需要确保你已经安装了Tesseract OCR库和openpyxl库。你可以使用pip来安装它们: ``` pip install pytesseract openpyxl ``` 然后,可以使用以下代码来实现功能: ```python import pytesseract from PIL import Image from openpyxl import Workbook # 设置Tesseract OCR库路径 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # 加载图像 image = Image.open('image.jpg') # 使用Tesseract OCR识别图像中的文字 text = pytesseract.image_to_string(image) # 创建Excel工作簿 workbook = Workbook() sheet = workbook.active # 将识别结果入Excel的第一行 sheet['A1'] = text # 保存Excel文件 workbook.save('output.xlsx') ``` 在上面的代码中,我们首先设置了Tesseract OCR库的路径,然后使用`Image.open()`函数加载了要识别的图像。接下来,使用`pytesseract.image_to_string()`函数将图像中的文字识别出来,并将结果保存在`text`变量中。 然后,我们创建了一个新的Excel工作簿,通过`Workbook()`函数实现,并选择了默认的活动工作表。使用`sheet['A1'] = text`将识别到的文字入Excel的A1单元格。 最后,使用`workbook.save()`函数将Excel文件保存到指定路径(在这个例子中,保存为`output.xlsx`文件)。 这样,我们就完成了使用Python识别图片文字并将结果生成Excel的功能。如果需要处理多张图片,可以在循环中重复上述步骤并将结果入Excel不同的单元格中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

同学小张

如果觉得有帮助,欢迎给我鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值