构建LangChain应用程序的示例代码:41、如何结合使用大型语言模型(LLMs)和 bash 进程来执行简单的文件系统命令指南

Bash 命令链使用指南

概述

本指南展示了如何结合使用大型语言模型(LLMs)和 bash 进程来执行简单的文件系统命令。

代码示例

from langchain_experimental.llm_bash.base import LLMBashChain
from langchain_openai import OpenAI# 初始化 OpenAI 的 LLM 实例,设置温度为 0,表示输出确定性结果
llm = OpenAI(temperature=0)# 提供文本提示,请求编写打印 'Hello World' 到控制台的 bash 脚本
text = "请编写一个 bash 脚本,将 'Hello World' 打印到控制台。"# 从 LLM 实例创建 Bash 链,设置 verbose 为 True 以输出更多运行时信息
bash_chain = LLMBashChain.from_llm(llm, verbose=True)# 调用 Bash 链执行文本提示指定的任务
bash_chain.invoke(text)

自定义提示

你还可以自定义使用的提示。以下是一个避免使用 ‘echo’ 命令的示例提示:

from langchain.prompts.prompt import PromptTemplate
from langchain_experimental.llm_bash.prompt import BashOutputParser# 定义提示模板,指定任务执行步骤和 bash 命令格式
_PROMPT_TEMPLATE = """
如果有人要求你执行一个任务,你的工作是想出一系列 bash 命令来执行该任务。在回答中没有必要写入 "#!/bin/bash"。确保使用以下格式逐步推理:
问题:"将名为 'target' 的目录中的文件复制到与 'target' 同级的名为 'myNewDirectory' 的新目录中"
我需要采取以下行动:
- 列出目录中的所有文件
- 创建一个新目录
- 将文件从一个目录复制到另一个目录
bash
ls
mkdir myNewDirectory
cp -r target/* myNewDirectory在编写脚本时不要使用 'echo'。这就是格式。开始!
问题:{question}
"""# 创建提示模板实例,指定输入变量和输出解析器
PROMPT = PromptTemplate(input_variables=["question"],template=_PROMPT_TEMPLATE,output_parser=BashOutputParser(),
)# 使用自定义提示创建 Bash 链
bash_chain = LLMBashChain.from_llm(llm, prompt=PROMPT, verbose=True)# 提供文本提示,请求编写不使用 'echo' 的 bash 脚本打印 'Hello World'
text = "请编写一个 bash 脚本,将 'Hello World' 打印到控制台,不要使用 'echo' 命令。"# 调用 Bash 链执行自定义提示指定的任务
bash_chain.invoke(text)

持久化终端

默认情况下,每次调用链时,都会在一个单独的子进程中运行。通过使用持久化的 bash 进程实例化,可以改变这种行为。

from langchain_experimental.llm_bash.bash import BashProcess# 创建持久化的 Bash 进程实例
persistent_process = BashProcess(persistent=True)# 使用持久化进程创建 Bash 链
bash_chain = LLMBashChain.from_llm(llm, bash_process=persistent_process, verbose=True)# 提供文本提示,请求列出当前目录然后上移一级
text = "列出当前目录,然后上移一级。"# 调用 Bash 链执行文本提示指定的任务
bash_chain.invoke(text)

状态维持

# 再次运行相同的命令,观察到状态在调用之间得以维持
bash_chain.invoke(text)

总结

本指南介绍了如何使用 LLMs 和 bash 进程来执行文件系统命令,并通过 Python 代码示例展示了如何构建和自定义 Bash 命令链。通过自定义提示和持久化终端的使用,可以更灵活和高效地执行 bash 脚本任务。

扩展知识点:

  • LLMs (Large Language Models): 大型语言模型,能够理解和生成自然语言文本。
  • Bash: 是 Linux 和 Unix 系统中最常用的 shell(命令行解释器)之一。
  • Python: 一种广泛使用的高级编程语言,支持多种编程范式。
  • OpenAI API: 提供访问 OpenAI 提供的各种 AI 模型的接口。
  • LangChain: 一个用于构建 AI 驱动的应用程序的 Python 库,支持多种 AI 模型和功能。
  • Persistent Process: 持久化进程,允许在多次调用之间保持状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s部署grafana beyla实现app应用服务依赖图可观测

k8s部署grafana beyla OS: Static hostname: test Icon name: computer-vm Chassis: vm Machine ID: 22349ac6f9ba406293d0541bcba7c05d Boot ID: 83bb7e5dbf27453c94ff9f1fe88d5f02 Virtualization: vmware Operating System: Ubuntu 22.04.4 LTS Kernel: Linux 5.15.0-105-g…

BEVM基于OP-Stack发布首个以WBTC为GAS连接以太坊和比特币生态的中继链

为了更好的连接以太坊和比特币生态,BEVM团队正在基于OPtimism的OP Stack来构建一个以WBTC为GAS兼容OP-Rollup的中继链,这条中继链将作为一种完全去中心化的中间层,把以太坊上的主流资产(WBTC/ ETH/USDC/USDT等)引入到BEVM网络。 不仅如此&am…

AlgorithmStar 度量 计算组件

AlgorithmStar 度量 计算组件 AlgorithmStar 本文将会基于 AlgorithmStar 1.40 以及以上的版本来演示,度量 计算 组件 的使用! 目录 文章目录 AlgorithmStar 度量 计算组件目录获取到依赖库度量计算组件 计算实例距离计算代表 - 欧几里德距离计算组件…

Redis数据库(一):Redis数据库介绍与安装

Redis是一种高性能的开源内存数据库,支持多种数据结构(如字符串、列表、集合等),具有快速的读写速度。它提供持久化、主从复制、高可用性和分布式部署等功能,适用于缓存、实时分析、消息队列等应用场景。Redis使用简单…

UE5 场景物体一键放入蓝图中

场景中,选择所有需要加入到蓝图的模型或物体。 点击 蓝图按钮,点击“将选项转换为蓝图” 在创建方法中,选择“子Actor”或着 “获取组件” 如果需要保持相对应的Actor的父子级别(多层),那么选择“获取组件…

计算机组成原理 | 数据的表示、运算和校验(4)基本运算方法

补码加减(运算与控制) (-Y)补 [Y补]变补,这个要好好理解 (-Y)补:先将Y的符号位置反,在求-Y的补码(数字为变反加1) [Y补]变补:先求Y的补码(数字为变反加1)&…

protobuf实践+生成C++代码的解析

目录 1.实践1(简单使用) 2.实践2(存储列表类数据) 3.实践3(定义RPC方法) 4.解析protobuf的message类 5.解析protobuf的service类 6.Rpcchannel是什么呢? 1.实践1(简单使用&…

Django中,update_or_create()

在Django中,可以使用update_or_create()方法来更新现有记录或创建新记录。该方法接受一个字典作为参数,用于指定要更新或创建的字段和对应的值。 update_or_create()方法的语法如下: 代码语言:python obj, created Model.obje…

python遍历文件夹中所有图片

python遍历文件夹中的图片-CSDN博客 这个是之前的版本,现在这个版本会更好,直接进来就在列表中 path glob.glob("1/*.jpg")print(path)print(len(path))path_img glob.glob("1/*.jpg")path_img.extend(path)print(len(path_img))…

问题解决:数据库自增id到最大报错

pgsql数据库id自增到长度问题: django.db.utils.DataError: nextval: reached maximum value of sequence "ip_prefix_info_id_seq" (32767) schema_name: ip_management_app table_name: ip_prefix_info # 先把自增id改到serial8,范围改大#…

行列视(RCV)在系统管理中的应用:解决生产型企业数据治理的挑战

行列视(RCV)作为一款面向生产型企业的综合性数据应用系统,在系统管理中扮演着至关重要的角色,特别是在解决生产型企业数据治理的挑战方面,表现出了卓越的性能。 首先,生产型企业面临着复杂而繁琐的数据治理…

学期结束如何发布期末成绩?

当期末的试卷最后一张被收起,当教室里的喧嚣逐渐沉寂,学生们的心中充满了对成绩的期待与忐忑。期末成绩,关乎着学生的心情,更关系到他们的未来学习动力。那么,如何在保护学生隐私的同时,高效地公布成绩呢&a…

vscode cmake debug 调试

在 VSCode 中调试使用 CMake 编译的程序,按照以下步骤进行: 1. **安装必要的扩展:** - 打开 VSCode,并确保你已经安装了以下扩展: - C/C(由 Microsoft 提供) - CMake - CMak…

Python Sqlalchemy基础使用

Python Sqlalchemy基础使用 Python Sqlalchemy基础使用基本使用创建Session创建ORM对象查询插入 进阶操作插入存在时更新执行SQL Python Sqlalchemy基础使用 这里记录一下,在编写python代码过程中使用Sqlalchemy的封装和基本使用方法。 (持续完善ing) 基本使用 …

代码随想录算法训练营Day48|188.买卖股票的最佳时机IV、309.最佳买卖股票时间含冷冻期、714.买卖股票的最佳时机含手续费

买卖股票的最佳时机IV . - 力扣(LeetCode) 至多可以购买k次,相比买卖股票的最佳时机III至多购买2次,区别在于次数不确定。 每买卖一次,dp数组的第二维度加2,dp数组的第二维度为2k1(0-2k&…

TDengine 3.2.3.0 集成英特尔 AVX512!快来看看为你增添了哪些助力

在当今的 IoT 和智能制造领域,海量时序数据持续产生,对于这些数据的实时存储、高效查询和分析已经成为时序数据库(Time Series Database,TSDB)的核心竞争力。作为一款高性能的时序数据库,TDengine 不仅采用…

Pandas数据分析:掌握agg()方法的高级应用“

今天一个知识点: agg() 方法的 func 参数可以传入单个函数或函数列表。 agg() 方法在Pandas库中用于对DataFrame或Series的列进行聚合操作。func 参数可以传入单个(值得注意的是,这里数据是一个单个而不是多个的内容,自己在这个…

【全开源】沃德会务会议管理系统(FastAdmin+ThinkPHP+Uniapp)

沃德会务会议管理系统一款基于FastAdminThinkPHPUniapp开发的会议管理系统,对会议流程、开支、数量、标准、供应商提供一种标准化的管理方法。以达到量化成本节约,风险缓解和服务质量提升的目的。适用于大型论坛、峰会、学术会议、政府大会、合作伙伴大会…

docker 安装达梦8

背景 X86-64架构使用Docker安装dm8_20240422_x86_rh6_64_rq_std_8.1.3.100_pack2.tar 1.下载Docker安装包 达梦官网下载dm8_20240422_x86_rh6_64_rq_std_8.1.3.100_pack2.tar安装包 快速下载通道: 达梦镜像包 2.将安装包上传至服务器,并加载镜像 拷…

结合人工智能的在线教育系统:开发与实践

人工智能(AI)正在革新各行各业,教育领域也不例外。结合AI技术的在线教育系统能够提供个性化的学习体验、智能化的教学辅助和高效的数据分析,从而大大提升教育质量和学习效果。本文将探讨结合AI技术的在线教育系统的开发与实践&…