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 后立即返回,不阻塞执行
实现逻辑
URL 合法性检查:验证输入的 URL 是否符合基本的 URL 格式规范
协议处理:
如果协议为
http或https,则直接替换为iplay或iplayspython# 示例 http://example.com/video.mp4 -> iplay://example.com/video.mp4 https://example.com/video.mp4 -> iplays://example.com/video.mp4如果是其他协议,则采用通用格式构造:
pythoniplay://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")注意事项
- 确保用户系统中已安装 iPlay 播放器
- 该工具会立即返回,不会等待播放器启动或视频加载
- 对于不支持的 URL 格式,工具会返回
False - 建议在生产环境中添加更详细的错误处理和日志记录