本教程将帮助您快速了解 langchain-skilllite 仓库的功能,并指导您完成第一个成功运行的示例。
项目地址: SkillLite
本仓库的作用
langchain-skilllite 为 SkillLite 提供 LangChain 集成。SkillLite 是一个轻量级的沙盒 Python 技能执行引擎。
通过 langchain-skilllite,您可以:
- 将 SkillLite 定义的技能作为 LangChain 工具使用,无缝集成到 LangChain 代理和 LangGraph 中。
- 在 Rust-based 的沙盒(skillbox)中安全地执行所有技能。
- 利用预执行代码分析进行安全扫描,识别潜在的危险操作。
- 通过回调处理程序监控工具执行和处理安全确认。
- 获得对 LangGraph 代理的完整异步支持。
简而言之,它让您能够安全、便捷地在 LangChain 代理中使用自定义 Python 技能。
前提条件
在开始之前,请确保您具备以下条件:
- Python 3.9 或更高版本 : 您可以通过运行
python --version来检查您的 Python 版本。 - Git: 用于克隆仓库。
- OpenAI 兼容的 API 密钥和端点 :
langchain-skilllite示例使用 OpenAI 兼容的 LLM。您需要一个 API 密钥和一个BASE_URL(例如 OpenAI、DeepSeek、Alibaba DashScope 或 Azure OpenAI)。
安装与设置
按照以下步骤设置您的开发环境:
-
克隆仓库:
bashgit clone https://github.com/EXboys/langchain-skilllite.git cd langchain-skilllite -
创建并激活虚拟环境 (推荐):
bashpython -m venv venv # 在 macOS/Linux 上 source venv/bin/activate # 在 Windows 上 .\venv\Scripts\activate -
安装依赖 :
安装
langchain-skilllite及其所需的langgraph和langchain-openai依赖。bashpip install langchain-skilllite langchain-skilllite[langgraph] langchain-openai python-dotenvpython-dotenv用于加载.env文件中的环境变量。 -
配置环境变量 :
langchain-skilllite示例需要一个.env文件来配置 LLM 和其他设置。在仓库的根目录(即
langchain-skilllite/目录)下创建一个名为.env的文件,并添加以下内容:ini# OpenAI 兼容 API 配置 BASE_URL=https://api.openai.com/v1 # 替换为您的 LLM 服务提供商的 BASE_URL API_KEY=your-api-key-here # 替换为您的实际 API 密钥 MODEL=gpt-4o-mini # 替换为您想使用的模型名称,例如 gpt-4o-mini, deepseek-chat, qwen-turbo 等 # 技能配置 (示例中会覆盖此项,但保留以供参考) SKILLS_DIR=./.skills # 网络配置 (可选) ALLOW_NETWORK=True NETWORK_TIMEOUT=30 # 沙盒配置 ENABLE_SANDBOX=true SKILLBOX_SANDBOX_LEVEL=3 # 安全设置 SKILLBOX_AUTO_APPROVE=0 # 0 表示需要手动确认,1 表示自动批准所有安全警告 # 资源限制 EXECUTION_TIMEOUT=120 # 技能执行超时 (秒) MAX_MEMORY_MB=256 # 最大内存限制 (MB)请务必将
BASE_URL、API_KEY和MODEL替换为您的实际值。
第一个工作示例
我们将运行仓库中提供的 examples/01_basic.py 示例。这个示例展示了如何加载技能并将其与 LangChain 代理一起使用。
-
查看示例代码:
python# examples/01_basic.py """ Basic usage: Load skills and use with LangChain agent. """ import os from pathlib import Path from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent from langchain_skilllite import SkillLiteToolkit # Load .env (从当前工作目录加载) load_dotenv() # 设置 skills_dir = Path(".skills") # 技能目录 llm = ChatOpenAI( base_url=os.getenv("BASE_URL"), api_key=os.getenv("API_KEY"), model=os.getenv("MODEL", "gpt-4o-mini"), ) # 将技能加载为 LangChain 工具 tools = SkillLiteToolkit.from_directory(skills_dir) print(f"Loaded {len(tools)} skills: {[t.name for t in tools]}") # 创建代理并运行 agent = create_react_agent(llm, tools) result = agent.invoke({"messages": [("user", "Convert 'hello world' to uppercase")]}) # 打印结果 for msg in result["messages"]: print(f"[{msg.type}]: {msg.content[:200] if msg.content else ''}") -
运行示例 :
确保您位于
langchain-skilllite仓库的根目录。bashpython examples/01_basic.py -
预期输出 :
您应该会看到类似以下的输出(具体内容可能因 LLM 模型而异):
Loaded 3 skills: ['echo', 'greeter', 'text-upper'] [ai]: tool_code [tool]: HELLO WORLD [ai]: HELLO WORLD这表明代理成功地识别了用户意图,调用了
text-upper技能,并将 "hello world" 转换为大写,然后返回了结果。
示例如何映射到仓库
SkillLiteToolkit.from_directory(skills_dir): 这是langchain-skilllite的核心功能之一。它扫描指定的skills_dir(在本例中是仓库根目录下的.skills文件夹),并将其中的每个子目录(例如text-upper、greeter、echo)识别为一个独立的"技能"。每个技能都会被包装成一个 LangChainBaseTool对象。- 例如,
text-upper技能负责将文本转换为大写。 greeter技能(位于.skills/greeter/scripts/main.py)是一个简单的 Python 脚本,它接收一个name参数并返回一个问候语。
- 例如,
ChatOpenAI(...): 这是 LangChain 的一个组件,用于与 OpenAI 兼容的 LLM 进行交互。它使用您在.env文件中配置的BASE_URL、API_KEY和MODEL。create_react_agent(llm, tools): 这是 LangGraph 提供的一个预构建代理,它使用 ReAct 模式。它接收一个 LLM 和一组工具。代理会根据用户输入决定何时以及如何使用这些工具。agent.invoke(...): 运行代理,将用户消息传递给它。代理会思考、规划并执行工具,直到得出最终答案。
常见问题
API_KEY或BASE_URL未设置或不正确 : 如果您看到与 LLM 连接失败或认证错误相关的消息,请检查您的.env文件中的API_KEY和BASE_URL是否正确,并且您的 API 密钥是否有效。.env文件未加载 : 确保您的.env文件位于您运行python命令的当前工作目录中。load_dotenv()默认从当前目录加载。langgraph或langchain-openai未安装 : 如果您看到ModuleNotFoundError,请确保您已通过pip install langchain-skilllite[langgraph] langchain-openai python-dotenv安装了所有必需的依赖。- Python 版本不兼容 :
langchain-skilllite需要 Python 3.9 或更高版本。 - SkillLite 版本要求 :
README.md中提到langchain-skilllite 0.1.7+需要skilllite 0.1.8+。pip install langchain-skilllite会自动安装兼容版本。如果您遇到与skilllite相关的错误,请验证其版本。
下一步
恭喜您成功运行了第一个 langchain-skilllite 示例!接下来您可以:
- 探索其他示例 :
examples/02_with_callback.py: 了解如何使用回调处理程序监控工具执行。examples/03_security_scan.py: 体验沙盒安全扫描和用户确认功能。examples/04_direct_execute.py: 学习如何在不使用 LLM 代理的情况下直接执行技能。
- 查看
.skills目录 : 了解技能是如何定义的。例如,查看greeter/scripts/main.py来理解一个简单的 Python 技能的结构。 - 查阅
README.md: 获取更深入的信息,包括 API 参考、安全级别详情以及更多配置选项。 - 创建您自己的技能 : 尝试在
.skills目录中创建一个新的子目录,并添加您自己的 Python 脚本来定义一个新技能。