项目简介
iq (Intelligent Query) 是一个功能强大的命令行工具,旨在简化多步骤自主AI工作流的构建和执行。您无需编写代码,只需通过简洁的YAML文件即可定义复杂的自动化流程,包括逻辑、状态管理和错误恢复。
其核心亮点之一是原生支持Model Context Protocol (MCP)。这意味着 'iq' 不仅可以在其工作流中作为客户端调用外部MCP工具,更可以将自身定义的工作流作为MCP服务器对外暴露,从而允许其他LLM客户端或AI代理通过标准化的JSON-RPC协议与之通信,并将其托管的工作流作为一个可调用的“工具”来使用。
主要功能点
- 无代码工作流设计: 使用声明式的YAML文件定义复杂的AI自动化流程,无需编程。
- 目标驱动工作流: 将多个AI驱动的步骤(如Prompt调用、工具执行)编排成连贯的自主代理工作流。
- 原生MCP集成和服务器模式: 可以将您定义的任何 'iq' 工作流作为Model Context Protocol服务器启动,或在工作流中连接和编排外部MCP工具。
- 链式调用、路由、迭代和状态管理: 内置支持灵活的规则语言,用于复杂工作流的构建。
- 容错执行: 内置的监督器和回退策略确保从错误中恢复。
- 灵活的I/O: 无缝支持标准输入输出、本地文件、目录、AWS S3、SQS等多种输入/输出方式。
- 支持多种LLM提供商: 兼容OpenAI、AWS Bedrock以及本地运行的LLM模型(如LM Studio)。
安装步骤
macOS (Homebrew 推荐)
brew tap fogfish/iq https://github.com/fogfish/iq brew install iq
升级到最新版本:
brew upgrade iq
直接下载二进制文件 (Linux, Windows)
从 'iq' 的 最新发布页面 下载对应您操作系统的可执行文件,并将其添加到系统PATH环境变量中。
从源代码构建
需要安装Go环境。在终端中运行:
go install github.com/fogfish/iq@latest
服务器配置 (用于MCP客户端连接 'iq' 服务器)
当您将 'iq' 工作流作为MCP服务器运行时,其他MCP客户端(例如其他AI代理或应用程序)就可以通过标准化的JSON-RPC协议连接到这个 'iq' 进程,并将其托管的工作流作为一个可调用的“工具”来使用。
要让您的MCP客户端成功连接到由 'iq' 启动的MCP服务器,您通常需要在客户端配置中提供以下关键信息:
-
工具名称 (Tool Name): 这是您在 'iq' 工作流 YAML 文件中 'name' 字段的值。例如,如果您的工作流文件 'myworkflow.yml' 的 'name' 是 'summarize_document',那么MCP客户端在调用时就使用 'summarize_document' 作为工具名称。这个名称告诉客户端它正在调用的是 'iq' 服务器上暴露的哪个特定工作流。
-
启动命令 (Command): 这是客户端用于启动 'iq' 服务器进程的完整命令行。通常的形式是 'iq agent serve -f <您的工作流文件>'。 例如,如果您的工作流文件是 'myworkflow.yml',命令可能就是 'iq agent serve -f myworkflow.yml'。客户端会执行这个命令来启动 'iq',然后通过标准输入/输出 (stdio) 与其通信。
-
输入Schema (Input Schema): 您的 'iq' 工作流 YAML 文件中 'schema.input' 部分定义的JSON Schema。这个Schema描述了调用该工具时客户端需要提供的参数结构和类型。MCP客户端会根据这个Schema来构造请求参数,并进行初步的验证。
-
输出Schema (Output Schema): 您的 'iq' 工作流 YAML 文件中 'schema.reply' 部分定义的JSON Schema。这个Schema描述了 'iq' 服务器(即您的工作流)在处理完成后返回的结果结构和类型。客户端可以根据这个Schema来解析和验证服务器的响应。
-
传输协议 (Transport Protocol): 'iq' 默认使用 'stdio'(标准输入/输出)作为MCP服务器的通信协议。这意味着MCP客户端应该配置为通过 'stdio' 与 'iq' 进程进行JSON-RPC消息的交换。
示例配置信息理解:
假设您的 'iq' 工作流文件 'my_summarizer.yml' 内容如下:
name: document_summarizer about: A tool to generate concise summaries of text. schema: input: type: object required: [text_content] properties: text_content: type: string description: The full text content to be summarized. reply: type: object required: [summary] properties: summary: type: string description: A concise summary of the provided text. jobs: main: steps: - prompt: | Summarize the following text clearly and concisely: {{.text_content}}
要让一个MCP客户端连接到由 'iq' 运行的这个工作流服务器,客户端需要知道:
- 工具名称: 'document_summarizer'
- 启动 'iq' 服务器的命令: 'iq agent serve -f my_summarizer.yml'
- 调用时预期的输入参数格式: 一个JSON对象,其中包含一个名为 'text_content' 的字符串。
- 'iq' 服务器返回的输出结果格式: 一个JSON对象,其中包含一个名为 'summary' 的字符串。
- 通信方式: 通过 'stdio' 进行JSON-RPC消息交换。
基本使用方法 (将 'iq' 工作流作为MCP服务器运行)
-
创建您的工作流文件 (例如 'my_agent_server.yml'):
name: greeting_tool about: A simple tool that generates a greeting message. schema: input: type: object required: [recipient_name] properties: recipient_name: type: string description: The name of the person to greet. reply: type: object required: [message] properties: message: type: string description: The personalized greeting message. jobs: main: steps: - prompt: | Hello, {{.recipient_name}}! This is a greeting from your iq agent.请确保您的工作流定义了 'name' (作为MCP工具的名称) 和 'schema.input'/'schema.reply' (定义输入输出结构)。
-
启动 'iq' 作为MCP服务器:
在您的终端中运行以下命令:
iq agent serve -f my_agent_server.yml'iq' 进程将启动,并进入服务器模式,通过标准输入/输出等待MCP客户端发送JSON-RPC请求。此时,您不会在终端中看到任何常规输出,除非有MCP客户端连接并进行通信。
-
连接MCP客户端并调用工具:
现在,任何支持Model Context Protocol的客户端都可以连接到这个 'iq' 进程。它会发现一个名为 'greeting_tool' 的新工具。 例如,如果客户端发送一个包含 '{"recipient_name": "World"}' 的JSON-RPC请求,'iq' 服务器将处理它并返回一个类似 '{"message": "Hello, World! This is a greeting from your iq agent."}' 的JSON-RPC响应。
信息
分类
开发者工具