Bash 命令链使用指南
概述
本指南展示了如何结合使用大型语言模型(LLMs)和 bash 进程来执行简单的文件系统命令。
代码示例
python
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' 命令的示例提示:
python
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 进程实例化,可以改变这种行为。
python
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)
状态维持
python
# 再次运行相同的命令,观察到状态在调用之间得以维持
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: 持久化进程,允许在多次调用之间保持状态。