Python SDK
当前版本: v0.1.11
概述
iFlow SDK是用于与iFlow CLI进行编程交互的SDK,通过他可以快速将iFlow CLI集成到你的业务系统中,结合workflow等智能体扩展,允许开发者构建具有对话、工具执行和任务规划能力的 AI 驱动应用程序,让业务系统具备AI的能力。 目前已支持Python、Java、TypeScript、Android版本。
✨ 核心特性:SDK 自动管理 iFlow 进程 - 无需手动配置!
系统要求
- Python: 3.8 或更高版本
- iFlow CLI: 0.2.24 或更高版本
- 操作系统: Windows、macOS、Linux
安装
pip install iflow-cli-sdk
快速开始
基础示例
SDK 会自动检测并启动 iFlow 进程,无需手动配置:
import asyncio
from iflow_sdk import IFlowClient, AssistantMessage, TaskFinishMessage
async def main():
# SDK 自动处理:
# 1. 检测 iFlow 是否已安装
# 2. 启动 iFlow 进程(如果未运行)
# 3. 查找可用端口并建立连接
# 4. 退出时自动清理资源
async with IFlowClient() as client:
await client.send_message("你好,iFlow!")
async for message in client.receive_messages():
if isinstance(message, AssistantMessage):
print(message.chunk.text, end="\n", flush=True)
elif isinstance(message, TaskFinishMessage):
break
asyncio.run(main())
简单查询
最简单的使用方式是通过 query 函数:
from iflow_sdk import query
import asyncio
async def main():
response = await query("法国的首都是哪里?")
print(response) # 输出:法国的首都是巴黎。
asyncio.run(main())
核心概念
IFlowClient
IFlowClient 是与 iFlow CLI 交互的主要接口,管理 WebSocket 连接的生命周期:
from iflow_sdk import IFlowClient, IFlowOptions
# 使用默认配置(自动管理进程)
async with IFlowClient() as client:
await client.send_message("你的问题")
async for message in client.receive_messages():
# 处理消息
pass
# 使用自定义配置
options = IFlowOptions(
url="ws://localhost:8090/acp", # WebSocket URL
auto_start_process=True, # 自动启动 iFlow
timeout=30.0 # 超时时间(秒)
)
async with IFlowClient(options) as client:
await client.send_message("你的问题")
async for message in client.receive_messages():
# 处理消息
pass
消息类型
SDK 支持多种消息类型,对应 iFlow 协议的不同响应:
AssistantMessage - AI 助手响应
包含AgentInfo支持,可以获取代理的详细信息:
import asyncio
from iflow_sdk import IFlowClient, AssistantMessage, TaskFinishMessage, AgentInfo
async def handle_assistant_message():
async with IFlowClient() as client:
await client.send_message("请介绍一下Python")
async for message in client.receive_messages():
if isinstance(message, AssistantMessage):
print(message.chunk.text, end="\n", flush=True)
# 访问代理信息(如果有)
if message.agent_info:
print(f"代理ID: {message.agent_info.agent_id}")
if message.agent_info.task_id:
print(f"任务ID: {message.agent_info.task_id}")
if message.agent_info.agent_index is not None:
print(f"代理索引: {message.agent_info.agent_index}")
elif isinstance(message, TaskFinishMessage):
break
if __name__ == "__main__":
asyncio.run(handle_assistant_message())