Skip to content

Langchain Tool 开发文档

概述

iPlay 提供了 Langchain Tool 集成,允许 AI 助手直接调用 iPlay 播放器打开和播放视频链接。

iplay_open_async 工具

功能说明

iplay_open_async 是一个异步工具,用于在 iPlay 播放器中打开视频链接。该工具会立即返回,不会阻塞程序执行。

函数签名

python
@tool
def iplay_open_async(url: str) -> bool:
    """
    在 iPlay 播放器中打开视频链接
    
    Args:
        url: 要播放的视频链接
        
    Returns:
        bool: 如果成功构造并打开链接返回 True,否则返回 False
    """

参数说明

  • url (str): 要播放的视频链接
  • async: 该参数通过 schema 名称实现,表示打开 iPlay 后立即返回,不阻塞执行

实现逻辑

  1. URL 合法性检查:验证输入的 URL 是否符合基本的 URL 格式规范

  2. 协议处理

    • 如果协议为 httphttps,则直接替换为 iplayiplays

      python
      # 示例
      http://example.com/video.mp4  -> iplay://example.com/video.mp4
      https://example.com/video.mp4 -> iplays://example.com/video.mp4
    • 如果是其他协议,则采用通用格式构造:

      python
      iplay://play/any?type=url&url={base64_encoded_url}

示例代码

python
from langchain.tools import tool
from urllib.parse import urlparse, urlencode
import base64
import webbrowser

@tool
def iplay_open_async(url: str) -> bool:
    """在 iPlay 播放器中打开视频链接(异步)"""
    
    try:
        # 检查 URL 是否合法
        parsed = urlparse(url)
        if not parsed.scheme or not parsed.netloc:
            return False
        
        # 根据协议类型构造 iPlay 协议链接
        if parsed.scheme in ['http', 'https']:
            # 直接替换协议
            iplay_scheme = 'iplays' if parsed.scheme == 'https' else 'iplay'
            iplay_url = url.replace(parsed.scheme, iplay_scheme, 1)
        else:
            # 使用通用格式
            encoded_url = base64.b64encode(url.encode()).decode()
            iplay_url = f"iplay://play/any?type=url&url={encoded_url}"
        
        # 打开链接(异步,立即返回)
        webbrowser.open(iplay_url)
        return True
        
    except Exception:
        return False

使用示例

python
from langchain.agents import initialize_agent, AgentType
from langchain.llms import OpenAI

# 初始化工具和代理
llm = OpenAI(temperature=0)
tools = [iplay_open_async]

agent = initialize_agent(
    tools=tools,
    llm=llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

# 使用代理播放视频
agent.run("请在 iPlay 中播放 https://example.com/video.mp4")

注意事项

  1. 确保用户系统中已安装 iPlay 播放器
  2. 该工具会立即返回,不会等待播放器启动或视频加载
  3. 对于不支持的 URL 格式,工具会返回 False
  4. 建议在生产环境中添加更详细的错误处理和日志记录

相关链接