Langchain如何自动执行python代码 | AI应用开发

Python:基于LangChain的AI Agent(智能代理)应用开发实践 本文介绍了基于LangChain的AI代理(Agent)开发实践。AI代理通过大语言模型(LLM)驱动,能够自主决策并调用外部工具处理复杂任务。文章详细讲解了代理的基本概念、工作流程(思考-行动-观察循环)及核心组件(用户、代理、LLM、工具、记忆库)。开发实践部分包括:安装LangChain及相关依赖;创建三个工具函数(天气查询、报告读取、数据查询)并定义参数对象;配置智谱AI大模型连接;构建工具集并初始化代理。该方案突破单一模型限制,通过整合LLM推理能力与外部工具功能,实现更强大的应用能力。 阅读详情
AI摘要

本文聚焦数据科学与人工智能领域,介绍使用LangChain的PythonREPL功能,实现大型语言模型生成代码的自动化执行,包括环境准备、创建实例、生成代码、执行代码等步骤,还提及安全性与效率考量。此外,分享了AI大模型的学习资料和商业化落地方案。

在当今的数据科学和人工智能领域,自动化代码生成与执行已成为提升效率与灵活性的重要手段。本文将详细介绍如何使用LangChain中的PythonREPL功能,实现大型语言模型(LLM)生成代码,并自动执行这些代码。通过这一流程,我们能够让大模型生成代码,然后通过代码执行来获取大语言模型通过文本生成本身不能很好完成的任务,特别是一些计算任务。

一、环境准备

首先,确保你的开发环境中已安装LangChain及其相关依赖。若尚未安装,可通过pip轻松完成:

pip install langchain

此外,还需配置好Python解释器及所需库(如datetime等),以确保PythonREPL能够顺利运行。

二、创建PythonREPL实例

在LangChain中,PythonREPL作为一个工具,允许我们执行任意Python代码。以下代码展示了如何创建PythonREPL实例:

from langchain_experimental.utilities import PythonREPL

# 初始化PythonREPL实例
python_repl = PythonREPL()

# 指定需要用到的全局的库
python_repl.globals = {"datetime": datetime}

三、利用大型语言模型生成代码

接下来,我们将利用大型语言模型(LLM)生成Python代码。此处假设你已有一个训练好的LLM模型,并可通过API进行访问。以下是一个利用LLM生成代码的示例:

这里使用讯飞星火的api接口来做演示


from openai import OpenAI
from langchain.llms.base import LLM
from typing import Any, List, Optional
from langchain.callbacks.manager import CallbackManagerForLLMRun
class SparkLLM(LLM):
    llm_client: Any = None

    def __init__(self):
        super().__init__()
        self.llm_client = OpenAI(
            api_key="xxx", # APIPassword
            base_url = 'https://spark-api-open.xf-yun.com/v1' # 指向讯飞星火的请求地址
            )
    def _call(self, prompt : str, stop: Optional[List[str]] = None,
                run_manager: Optional[CallbackManagerForLLMRun] = None,
                **kwargs: Any):
        response = self.llm_client.chat.completions.create(
                model='4.0Ultra', # 指定请求的版本
                messages = [
                    {"role": "system", "content": "你是一个智能AI助手,擅长编写合格的代码"},
                    {"role": "user", "content": prompt}
                ],
                temperature=0.7,  # 控制生成文本的随机性。越低越确定,越高越随机。
                top_p=0.9,       # 核采样 (Nucleus sampling)。top_p=0.9表示只考虑概率质量前90%的词。
                max_tokens=4096,  # 最大生成的token数量。
                stream=False      # 开启流式输出
            )
        return response.choices[0].message.content
    @property
    def _llm_type(self) -> str:
        return "sparkllm"

from replicate import Replicate  # 假设使用Replicate来访问LLM模型



# 实例化LLM模型(此处以replicate库为例,实际使用时需替换为你的LLM模型)
llm = SparkLLM()

# 给LLM模型一个提示,生成我们需要的Python代码
prompt = """
请编写一个Python函数,该函数接受一个整数n作为输入,
并返回从1到n(包含n)的所有整数的和。
"""
generated_code = llm(prompt)

print(generated_code)

生成的代码可能如下所示:

def sum_integers(n):
    total = 0
    for i in range(1, n + 1):
        total += i
    return total

四、在PythonREPL中执行生成的代码

现在,我们已在PythonREPL中执行上述生成的代码。利用python_repl.run方法,可轻松实现这一点:

# 执行生成的代码,并捕获输出
execution_result = python_repl.run(generated_code)
print("执行结果:")
print(execution_result)

但请注意,由于generated_code中未包含直接调用sum_integers函数的语句,因此execution_result可能无具体输出。为验证函数功能,我们需添加调用语句,如:

code_with_call = f"{generated_code}\nprint(sum_integers(10))"
execution_result = python_repl.run(code_with_call)
print("执行结果:")
print(execution_result)

此时,execution_result将显示函数sum_integers(10)的返回值,即55。

在来一写使用langchain的例子:

    from langchain_core.prompts import PromptTemplate
    from langchain_core.output_parsers import StrOutputParser

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

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

    \```python
    ....
    \```
    problem:{input}
    """
    prompt_template = PromptTemplate.from_template(template)

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

        print(after.split("```")[0])
        return after.split("```")[0]


    pythonrepl = PythonREPL()
    pythonrepl.globals = {"datetime": datetime}

    model = SparkLLM()
    chain = prompt_template | model | StrOutputParser() | _sanitize_output | pythonrepl.run

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

    result = chain.invoke({"input": "what time now?"})
    print(result)

五、安全性与效率考量

在使用PythonREPL执行动态生成的代码时,安全性与效率至关重要。为确保代码安全,建议在沙箱环境中执行,或对代码进行预先审查。同时,对于大型代码块或复杂计算,需关注执行效率,并适时优化。

六、结论

通过LangChain的PythonREPL功能,我们实现了大型语言模型生成代码的自动化执行。这一流程不仅提升了代码生成的灵活性,还简化了代码验证与优化过程。未来,随着技术的不断发展,相信这一流程将变得更加高效与智能。


本文详细介绍了如何使用LangChain的PythonREPL功能,实现大型语言模型生成代码的自动化执行。希望这一流程能为你的数据科学与人工智能项目带来便利与启发。

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

Python 解析 LangChain 与 AI 应用开发 LangChain 是一个专注于简化 LLM 应用开发的框架。它提供了一套模块化的工具,使得开发者能够快速搭建各种类型的 AI 应用程序,而无需从零开始编写复杂的代码。LangChain 的设计理念是“低门槛、高效率”,这意味着即使是初学者也能通过简单的配置快速上手,并且对于有经验的开发者来说,它也提供了足够的灵活性以满足复杂需求。支持多种主流的大型语言模型(如 GPT-3、GPT-4 等)。内置了丰富的数据处理管道,用于清洗、转换输入输出数据。 阅读详情

相关推荐

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

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

同学小张的博客 2948

构建LangChain应用程序的示例代码:43、如何使用大型语言模型(LLMs)和Python REPLs(Read-Eval-Print Loops)来解决复杂的数学问题

本文档是一个数学链计算的示例,它演示了如何利用大型语言模型和Python REPLs来解决数学问题。文档中的代码展示了如何使用langchain库中的类来执行数学运算,并通过OpenAI类与OpenAI的API进行交互。

Hugo的博客 517

【LLM】Langchain使用[四](评估、代理)

首先深入到检索QA链中,然后它进入了一些文档链。如上所述,我们正在使用stuff方法,现在我们正在传递这个上下文,可以看到,这个上下文是由我们检索到的不同文档创建的。因此,在进行问答时,当返回错误结果时,通常不是语言模型本身出错了,实际上是检索步骤出错了,仔细查看问题的确切内容和上下文可以帮助调试出错的原因。 然后,我们可以再向下一级,看看进入语言模型的确切内容,以及 OpenAI 自身,在这里,我们可以看到传递的完整提示,我们有一个系统消息,有所使用的提示的描述,这是问题回答链使用的提示,我们可以看到提示

发现问题,并解决问题,批判性思维 2178

【吴恩达deeplearning.ai】基于LangChain开发大语言应用模型(下)

LangChain for LLM Application Development 基于LangChain开发大语言应用模型(上)langchain具有检索能力,可以通过检索用户提供的文档内容,进行相应的回答。以下具体讲解实现逻辑1、【准备阶段】将文档内容(如列表)拆分成多个分片2、【准备阶段】将分片通过embed技术转换为空间向量数组3、【提问阶段】用户提问时,程序自动将提问内容embed为空间向量4、【提问阶段】将提问的空间向量和文档生成的空间向量数组比较,找到最相似的几个5、 【回答阶段】根据对应相关

shanesu的博客 2056

基于LangChain从零实现Auto-GPT完全指南

本文从分析Auto-GPT的强大功能点入手,结合LangChain框架所提供的Prompt模板、向量记忆、API功能代理等服务,以及充分使用LLM(ChatGPT/Bard)大语言模型能力,通过丰富的示例展示了如何从零到一构建AutoGPT加强版!

陶人超有料的博客 6548

Qt5+OSG实战:如何用osgQOpenGLWidget在窗口中加载3D模型(附完整代码)

本文详细解析了如何在Qt5中使用osgQOpenGLWidget加载和渲染3D模型,涵盖环境配置、核心架构、性能优化及高级技巧。通过实战案例和完整代码,帮助开发者实现工业级3D模型渲染,提升Qt与OSG的整合效率。

weixin_42741930的博客 263

用 LangChain 自动写并执行 Python 代码

本文介绍了如何使用 LangChain 表达式语言(LCEL)构建一个自动编写和执行 Python 代码的流水线。通过四个核心步骤:安装依赖库、设置提示模板和AI模型、清理代码输出、使用Python REPL执行代码,用户可以输入问题(如"2加2等于多少"),系统会自动生成并执行对应的Python代码返回结果。文章特别强调了安全注意事项,提醒用户仅用于简单计算任务,避免执行危险代码。关键点包括:链的顺序(提示→模型→解析→清理→运行)不能乱、清理函数对去除代码格式至关重要、以及Pytho

servepeople的博客 647

OV5640调试大坑,关于binning、RES分辨率与EV曝光

OV5640在使用binning模式时,必须考虑使用场景,分辨率下降叠加动态范围压缩,会使目标对象细节在高光环境下大量丢失,2x2的binning模式,分辨率会远低于感光面积的1/4。

chongyun_的专栏 1824

【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案

用LangChain写Python代码并执行来生成答案

2301_81940605的博客 2697

Midas Civil实战避坑指南:从建模报错到施工阶段分析

本文详细解析了Midas Civil在桥梁建模与施工阶段分析中的实战避坑技巧,涵盖从基础建模到高级边界条件设置的全流程。针对截面定义、节点创建、施工荷载区分等常见问题提供专业解决方案,帮助工程师避免计算误差,提升结构分析效率。特别强调施工阶段荷载与恒荷载的正确处理,以及弹性连接的合理应用。

weixin_30319153的博客 349

Isaac Gym摄像头数据获取全攻略:从CPU到GPU,教你实时显示RGB与深度图

本文详细介绍了在Isaac Gym中获取摄像头数据的两种高效方案:CPU模式与GPU张量模式。通过实战代码示例,展示了从摄像头配置、数据获取到实时可视化RGB与深度图的全流程,帮助开发者优化机器人仿真与计算机视觉应用的性能。特别强调了GPU模式下的零拷贝访问与张量运算优势,适用于需要低延迟处理的场景。

weixin_29056701的博客 388

基于 LangChain 的自动化测试用例的生成与执行

自动化测试用例的生成与执行的实现原理。自动化测试用例的生成与执行的实现思路。利用 Agent 实现自动化测试用例的生成与执行。

ceshiren_com的博客 1587

OK3588-C开发板Forlinx Desktop系统烧录与多媒体功能实战

本文详细介绍了OK3588-C开发板Forlinx Desktop系统的烧录步骤与多媒体功能实战。从硬件准备到软件工具配置,逐步解析RKDevTool烧录技巧,并深入测试摄像头、视频编解码及音频功能,帮助开发者快速掌握RK3588芯片的强大性能与Ubuntu系统的优化应用。

weixin_29190169的博客 417

大模型时代,前端必须了解一下LangChain应用开发框架

LangChain是一个可以用Javascript来进行开发的大模型应用开发框架,它本质上也提供了一种用大模型来进行应用开发的成熟的技术路线/框架。本期节目详细讲解了这个成熟的技术路线是怎么利用大模型来进行应用的。

pythonhy的博客 940

关于42步进电机驱动——基于STM32 HAL库实现

我找了好多资料,好多关于42步进电机的都是文档,这么文档都需要积分,需要积分就算了内容还非常差,浪费时间和电脑的内存。关于大部分是基于Arduino和51去驱动的 42步进电机驱动硬件如下: 首先你要了解步进电机的驱动原理,我也不啰嗦了,请看这边博客: 二相四线,四相五线,四相六线步进电机接线及驱动方法 , 看完这篇你就知道驱动和接线的原理了。 起初我也为如何接线烦恼,因为有些博客在讲述这些问题的时候没有讲的很透彻。 方法如下: ①用万用表调到欧姆档,用其中一个表笔搭在一个引脚上,依次测其它.

Jodan132的博客 1万+

OpenClaw与传统AI助手区别,为什么要本地部署

OpenClaw是一款本地部署的开源AI助手框架,与ChatGPT等云端服务相比具有显著优势。它支持完全离线运行,数据隐私性高,所有信息都存储在本地设备上,避免了云端服务的隐私风险。OpenClaw采用模块化设计,可自由定制功能,且无需支付订阅费用,只需一次性硬件投入。推荐在树莓派、迷你主机等设备上部署,最低配置仅需1核CPU和1GB内存。安装过程包含系统初始化、依赖安装、配置设置等步骤,支持通过systemd服务实现开机自启和后台运行。特别适合注重数据安全、需要离线使用或预算有限的用户群体。

一键难忘的博客 1690

LLM Sandbox与LangChain集成:打造智能AI代码执行工作流

LLM Sandbox是一个轻量级且可移植的LLM沙箱运行时(代码解释器)Python库,能为AI应用提供安全的代码执行环境。将其与LangChain集成,可构建强大的智能代码执行工作流,让AI不仅能生成代码,还能安全地运行和验证代码结果。 ## 为什么选择LLM Sandbox与LangChain集成? LLM Sandbox提供了安全隔离的代码执行环境,支持多种编程语言,包括Python、

gitblog_00564的博客 393

MICCAI‘23 | TSegFormer:基于几何引导Transformer的口内扫描3D牙齿分割

光学口内扫描仪(IOS)在数字牙科中广泛应用于提供牙冠和牙龈的详细3D信息。准确的3D牙齿分割对于各种牙科应用至关重要,但现有方法在复杂边界处容易出错,并且在不同患者之间表现不佳。本文提出了TSegFormer,它通过多任务3D Transformer架构捕捉IOS点云中不同牙齿和牙龈之间的局部和全局依赖关系。此外,作者设计了一种基于新颖点曲率的几何引导损失,以端到端方式优化边界,避免了耗时的后处理,从而实现临床适用的分割。

小白学视觉 291

使用 LangChain Pyodide Sandbox 在安全环境中执行 Python 代码

本文介绍了 LangChain 提供的 langchain-sandbox 工具(v0.0.6),该工具基于 Deno 和 Pyodide 构建安全的 Python 执行环境。文章详细讲解了安装方法、权限控制机制,并通过两个完整示例展示如何使用:简单代码执行和带参数的异步函数执行。沙箱支持细粒度权限配置(如文件读写、网络访问等),并强调最小权限原则和安全注意事项。该方案适用于LLM代码执行、在线教学等需要安全运行不可信Python代码的场景,具有强隔离性、异步支持和JSON序列化等特点。

weixin_46244623的博客 1607

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

使用LangChain构建标准化AI应用开发框架

这段代码创建了一个。

博客简介 1269

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: ChatGPT+Google Colab批量抓取NBER工作论文(0基础+代码+Prompt)
下一篇: 对想学习人工智能或者大模型技术从业者的建议
AI程序猿人
博客等级 码龄3年 6517粉丝 561原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值