LangChain-SkillLite 快速入门

本教程将帮助您快速了解 langchain-skilllite 仓库的功能,并指导您完成第一个成功运行的示例。

项目地址: SkillLite

本仓库的作用

langchain-skillliteSkillLite 提供 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)。

安装与设置

按照以下步骤设置您的开发环境:

  1. 克隆仓库:

    bash 复制代码
    git clone https://github.com/EXboys/langchain-skilllite.git
    cd langchain-skilllite
  2. 创建并激活虚拟环境 (推荐):

    bash 复制代码
    python -m venv venv
    # 在 macOS/Linux 上
    source venv/bin/activate
    # 在 Windows 上
    .\venv\Scripts\activate
  3. 安装依赖 :

    安装 langchain-skilllite 及其所需的 langgraphlangchain-openai 依赖。

    bash 复制代码
    pip install langchain-skilllite langchain-skilllite[langgraph] langchain-openai python-dotenv

    python-dotenv 用于加载 .env 文件中的环境变量。

  4. 配置环境变量 :
    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_URLAPI_KEYMODEL 替换为您的实际值。

第一个工作示例

我们将运行仓库中提供的 examples/01_basic.py 示例。这个示例展示了如何加载技能并将其与 LangChain 代理一起使用。

  1. 查看示例代码:

    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 ''}")
  2. 运行示例 :

    确保您位于 langchain-skilllite 仓库的根目录。

    bash 复制代码
    python examples/01_basic.py
  3. 预期输出 :

    您应该会看到类似以下的输出(具体内容可能因 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-uppergreeterecho)识别为一个独立的"技能"。每个技能都会被包装成一个 LangChain BaseTool 对象。
    • 例如,text-upper 技能负责将文本转换为大写。
    • greeter 技能(位于 .skills/greeter/scripts/main.py)是一个简单的 Python 脚本,它接收一个 name 参数并返回一个问候语。
  • ChatOpenAI(...) : 这是 LangChain 的一个组件,用于与 OpenAI 兼容的 LLM 进行交互。它使用您在 .env 文件中配置的 BASE_URLAPI_KEYMODEL
  • create_react_agent(llm, tools): 这是 LangGraph 提供的一个预构建代理,它使用 ReAct 模式。它接收一个 LLM 和一组工具。代理会根据用户输入决定何时以及如何使用这些工具。
  • agent.invoke(...): 运行代理,将用户消息传递给它。代理会思考、规划并执行工具,直到得出最终答案。

常见问题

  • API_KEYBASE_URL 未设置或不正确 : 如果您看到与 LLM 连接失败或认证错误相关的消息,请检查您的 .env 文件中的 API_KEYBASE_URL 是否正确,并且您的 API 密钥是否有效。
  • .env 文件未加载 : 确保您的 .env 文件位于您运行 python 命令的当前工作目录中。load_dotenv() 默认从当前目录加载。
  • langgraphlangchain-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 脚本来定义一个新技能。
相关推荐
人道领域8 小时前
从零实现一个轻量级 RPC 框架:通信协议与动态代理的核心原理
开发语言·网络·qt
申耀的科技观察8 小时前
【观察】神州数码郭为:AI for Process不止于“AI+”,而是“AI次方”的系统性变革
人工智能
qcx238 小时前
Warp源码深度解析(三):Block-Based终端引擎——Grid模型、PTY与Shell Integration
人工智能·设计模式·架构·wrap
谁似人间西林客8 小时前
工业AI选型指南:从数据标准化到智能体落地
人工智能
SENKS_DIGITAL8 小时前
5G数字展厅的空间叙事与关键技术演绎-森克思科技
人工智能·科技·5g·设计·艺术·展厅设计·展览设计
灰子学技术8 小时前
Envoy HTTP 协议实现技术文档
网络·网络协议·http
济6178 小时前
Ai智能体专栏---从零搭建完全本地、无依赖、可离线的个人知识库---Ollama+RAGFlow 保姆级教程
人工智能·ai·智能体
yongyoudayee8 小时前
AI原生 vs +AI:从技术架构看企业SaaS的未来路径
人工智能·架构·ai-native
cd_949217218 小时前
2026年朝阳永续AI小二专业研投能力解析
前端·人工智能·easyui