项目简介

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服务器运行)

  1. 创建您的工作流文件 (例如 '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' (定义输入输出结构)。

  2. 启动 'iq' 作为MCP服务器:

    在您的终端中运行以下命令:

    iq agent serve -f my_agent_server.yml

    'iq' 进程将启动,并进入服务器模式,通过标准输入/输出等待MCP客户端发送JSON-RPC请求。此时,您不会在终端中看到任何常规输出,除非有MCP客户端连接并进行通信。

  3. 连接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响应。

信息

分类

开发者工具