构建深度集成AI助手:CopilotKit - 应用内的智能伙伴,让AI真正与用户协同工作!

750 阅读12分钟

构建深度集成AI助手:CopilotKit - 应用内的智能伙伴,让AI真正与用户协同工作!

设想一下,在您的应用中,AI不再是孤立的聊天窗口,而是真正融入工作流、理解上下文、并与用户协同完成任务的智能伙伴。这就是CopilotKit旨在实现的愿景。

它提供了一套优雅的React UI组件和强大的基础设施,帮助开发者轻松构建AI Copilots、AI聊天机器人和应用内AI代理。CopilotKit专注于“Agentic last-mile”,也就是让AI智能体能够深入应用的毛细血管,与用户界面、数据和工作流无缝交互,而不仅仅停留在简单的问答层面。

CopilotKit Logo

CopilotKit Logo

借助CopilotKit,您可以:

  • 深入集成: 将AI功能直接嵌入到应用界面的各个角落,与现有UI、数据和后端服务紧密结合。
  • 情境感知: AI助手能够理解当前的用户界面状态、屏幕上的内容以及用户的操作历史,提供高度相关的帮助。
  • 执行操作: AI不再只是提供信息,它可以通过定义好的“工具”或“行动”来执行用户意图,例如填写表单、修改数据、导航应用等。
  • 智能体协同 (CoAgents): 构建更复杂的AI工作流,让多个AI智能体协同工作,甚至与用户协作,完成复杂的任务。

CopilotKit不仅仅是另一个聊天UI库,它提供了一整套基础设施,让您能够轻松地将AI的能力以Copilot或智能体的形式融入您的应用,从而显著提升用户体验和效率。

NPM

NPM

MIT

MIT

Discord

Discord

CopilotKit Discord

CopilotKit Discord

CopilotKit GitHub

CopilotKit GitHub

CopilotKit GitHub

CopilotKit GitHub

LI

LI

Discord

Discord

214 (1)

214 (1)

🏆 精彩示例赏析

通过一系列精选示例,我们可以更直观地了解CopilotKit如何赋能您的应用:

📝 表单填写 Copilot (Form-Filling Copilot)

传统的表单填写过程往往繁琐而枯燥。有了表单填写Copilot,这一过程被转化为自然的对话。AI助手能够主动询问必要的信息,理解对话中的上下文,并自动将信息填充到相应的表单字段中。用户不再需要逐个字段地手动输入,只需与AI自然交流,即可轻松完成表单。这极大地提升了数据录入的效率和用户体验,尤其适用于包含大量字段或需要用户提供复杂信息的场景。

GitHub → Live Demo →

🔄 状态机 Copilot (State Machine Copilot)

在复杂的对话流程中,管理用户输入的意图和对话所处的状态是一个挑战。状态机Copilot示例展示了如何将复杂的会话流程转化为可管理的状态机。这个基于AI的汽车销售应用演示了如何构建 sophisticated 的多阶段交互,AI能够感知上下文并根据对话内容在不同状态之间平滑过渡。这种模式适用于需要引导用户完成特定流程(如购买、注册、故障排查)的应用。

GitHub → Live Demo →

💬 与您的数据对话 (Chat With Your Data)

数据可视化通常需要用户具备一定的操作技能和对图表含义的理解。通过“与您的数据对话”Copilot,您可以为数据看板添加一个AI驱动的助手。用户可以使用自然语言询问关于数据的问题,AI能够理解查询并提供洞察,甚至允许用户通过对话与指标进行交互。这使得非专业用户也能轻松获取数据价值,降低了数据分析的门槛。

GitHub → Live Demo →

🏦 SaaS Copilot (银行示例)

这是一个情境感知的金融助手,能够分析用户的交易记录,提供消费洞察,并通过自然对话帮助用户管理财务。这个示例展示了CopilotKit如何深度集成复杂的应用数据结构,为用户提供个性化、智能化的金融服务。类似的应用可以扩展到其他领域,例如项目管理中的任务助手、电商应用中的购物顾问等。

GitHub →

🧙‍♂️ 智能体示例 (Agent Examples)

CopilotKit不仅支持Copilot模式,其Agentic框架(CoAgents)还允许您构建更复杂的AI智能体应用:

✈️ 旅行规划师 (Travel Planner)

这是一个原生智能体应用,通过生成详细行程、查找景点和可视化旅行计划来帮助用户规划旅行。它展示了AI智能体如何与用户协作,创造丰富、互动的体验。与传统的单次回应式助手不同,旅行规划师智能体能够理解用户的多步骤请求,记忆偏好,并根据实时信息动态调整计划,体现了更强的自主性和规划能力。

GitHub → Tutorial →

🔍 研究画布 (Research Canvas)

一个多智能体文档分析系统,通过协同的AI工作流,帮助用户分析论文、综合信息并生成全面的研究摘要。多个AI智能体可能分别负责信息提取、内容总结、交叉引用等任务,共同协作完成一个复杂的研究分析流程。这在需要处理大量非结构化文本信息的场景(如法律文件审查、市场报告分析)中尤为有用。

[GitHub →](https:// vựcKit/CopilotKit/tree/main/examples/coagents-research-canvas) Live Demo →

这些示例生动地展示了CopilotKit的强大能力和广泛的应用潜力,无论您想构建一个简单的聊天机器人,还是一个能够深度参与用户工作流的复杂AI智能体,CopilotKit都能提供所需的基础设施和工具。

快速入门

想要立即体验CopilotKit的魔力?只需几分钟即可开始。请查看快速入门文档:

docs.copilotkit.ai/quickstart

关键代码示例

CopilotKit提供了一系列React Hook和组件,让开发者能够灵活地构建AI功能:

无头UI与完整控制

如果您需要完全自定义UI,可以使用无头(Headless)Hook,它提供了底层的数据和状态管理,UI则由您自己构建:

// Headless UI with full control
// useCopilotChat Hook提供了控制聊天界面的核心逻辑
const { visibleMessages, appendMessage, setMessages, ... } = useCopilotChat();

// 您可以使用visibleMessages来渲染聊天消息,appendMessage发送消息,setMessages管理消息列表等等。
// 这种方式提供了最大的灵活性来集成到您现有的设计系统。

预构建组件与深度定制

CopilotKit也提供了预构建的组件,开箱即用,同时支持深度定制(CSS样式或替换子组件):

// Pre-built components with deep customization options (CSS + pass custom sub-components)
// 这里是一个概念上的占位符,表示可以使用组件而非hook来快速搭建UI。
// 例如,可能有一个<CopilotChat />组件,通过属性来控制外观和行为。
// ...

前端检索增强生成 (Frontend RAG)

将用户当前正在查看的或前端可访问的数据提供给AI,增强其情境理解能力:

// Frontend RAG (Retrieval Augmented Generation)
// useCopilotReadable Hook允许您将前端的数据(如当前用户的同事列表)标记为AI可读。
// AI在生成回复时可以访问这些数据,从而提供更个性化和情境相关的响应。
useCopilotReadable({
  description: "The current user's colleagues", // 数据的描述
  value: colleagues, // 数据的值,例如一个同事列表数组
});

// knowledge-base integration
// useCopilotKnowledgebase Hook用于集成更复杂的知识库
useCopilotKnowledgebase(myCustomKnowledgeBase) // myCustomKnowledgeBase可以是您的知识库对象或加载函数
// 这使得AI能够查询和利用外部或应用内的结构化/非结构化知识。

前端操作与生成式UI

定义AI可以在前端执行的操作(工具),并支持流式生成UI响应:

// Frontend actions + generative UI, with full streaming support
// useCopilotAction Hook允许您定义一个AI可以调用的函数(一个"行动")。
// 例如,这里的"appendToSpreadsheet"行动可以让AI将数据添加到应用内的电子表格。
useCopilotAction({
  name"appendToSpreadsheet", // 行动的名称
  description"Append rows to the current spreadsheet", // 行动的描述,供AI理解
  parameters: [ // 行动所需的参数
    { name"rows", type"object[]", attributes: [{ name"cells", type"object[]", attributes: [{ name"value", type"string" }] }] }
  ],
  render: ({ status, args }) => {
    // render函数可以在AI调用行动时渲染一个临时的UI,例如显示正在添加数据。
    // 根据status(如'running', 'success')和args(AI传递的参数)来更新UI。
    // ... 渲染逻辑 ...
  },
  handler: ({ rows }) => {
    // handler函数是实际执行行动逻辑的地方
    // 这里是将AI提供的rows数据添加到spreadsheet状态中。
    setSpreadsheet({ ...spreadsheet, rows: [...spreadsheet.rows, ...canonicalSpreadsheetData(rows)] })
  },
});

// 这个机制是构建生成式UI和实现AI与应用深度交互的关键。
// AI不仅能告诉你做什么,还能直接帮你完成。

结构化自动补全

为输入框或其他需要结构化输入的场景提供AI驱动的自动补全或修改建议:

// structured autocomplete for anything
// useCopilotStructuredAutocompletion Hook可以根据用户输入和上下文,
// 由AI生成结构化的自动补全建议。
const { suggestions } = useCopilotStructuredAutocompletion(
  {
    instructions`Autocomplete or modify spreadsheet rows based on the inferred user intent.`// 给AI的指令,说明自动补全的任务
    value: { rows: spreadsheet.rows.map((row) => ({ cells: row })) }, // 提供给AI的当前值或上下文
    enabled: !!activeCell && !spreadsheetIsEmpty, // 控制何时启用自动补全
  },
  [activeCell, spreadsheet] // 依赖项,当这些值变化时可能触发新的自动补全
);
// suggestions中包含了AI生成的结构化建议,可以用于展示给用户选择或自动应用。

代码示例 (CoAgents: 应用内 LangGraph 智能体)

CopilotKit的CoAgents框架集成了LangGraph.js, enabling您在应用中构建和运行基于状态图的复杂AI智能体:

// Share state between app and agent
// useCoAgent Hook用于管理AI智能体的状态,并与应用状态同步。
const { agentState } = useCoAgent({ 
  name"basic_agent", // 智能体的名称
  initialState: { input"NYC" } // 智能体的初始状态
});
// agentState可以在前端访问,反映智能体当前的内部状态或处理结果。

// agentic generative UI
// useCoAgentStateRender Hook允许您根据智能体的状态渲染特定的UI。
useCoAgentStateRender({
  name"basic_agent",
  render: ({ state }) => {
    // 根据智能体state中的值来渲染UI,例如显示旅行规划的当前步骤或结果。
    // ... 渲染逻辑 ...
  },
});
// 这使得智能体的进展和输出能够直接体现在应用的用户界面中。

// Human in the Loop (Approval)
// 将人类审批流程集成到AI智能体工作流中是Agentic应用的关键。
// 通过useCopilotAction,您可以定义一个需要用户批准的操作(如发送邮件)。
useCopilotAction({
    name"email_tool", // 行动名称
    parameters: [{ name"email_draft", type"string", description"The email content", requiredtrue }], // AI会生成邮件草稿作为参数
    renderAndWaitForResponse: ({ args, status, respond }) => (
      // 这个函数会在AI调用email_tool时渲染一个UI,例如一个邮件预览框。
      // 用户可以在UI中查看邮件草稿(args.email_draft),然后选择批准或拒绝。
       respond?.({ approved: false })} // 点击取消时调用respond并传递结果
        onSend={() => respond?.({ approved: true, metadata: { sentAt: new Date().toISOString() } })} // 点击发送时调用respond并传递结果
      />
    ),
  });
// respond函数将用户的选择(批准或拒绝)传递回AI智能体,影响后续的流程。

// ---

// intermediate agent state streaming (supports both LangGraph.js + LangGraph python)
// 对于复杂的智能体工作流,实时显示中间步骤(intermediate state)非常重要。
// CopilotKit支持从LangGraph流式传输中间状态。
const modifiedConfig copilotKitCustomizeConfig(config, {
  emitIntermediateState: [{ 
    stateKey"outline", // LangGraph状态键
    tool"set_outline", // 对应的前端行动名称,用于处理这个中间状态
    toolArgument"outline" // 将stateKey的值映射到行动的哪个参数
  }],
});
const response await ChatOpenAI({ model"gpt-4o" }).invoke(messages, modifiedConfig);
// 通过配置emitIntermediateState,LangGraph在更新指定状态键时,
// 会触发对应的useCopilotAction行动,让前端能够实时接收并处理这些中间结果,例如逐步显示文档大纲的生成过程。

这些代码示例展示了CopilotKit如何提供一套强大且灵活的工具集,帮助开发者将AI能力深度集成到他们的React应用中,构建出下一代的智能用户体验。无论您是想构建简单的聊天机器人,还是复杂的、能够与用户协同完成任务的AI智能体,CopilotKit都提供了所需的基础和高级特性。

同类项目介绍

在构建应用内AI助手和智能体的领域,存在一些其他工具和框架,它们通常专注于以下一个或多个方面:

  1. 1. AI Chat UI 库: 这些库主要提供用于构建聊天界面的前端组件,简化消息的显示、输入框、加载状态等。它们通常不包含太多AI交互逻辑本身,开发者需要自己处理与AI模型的通信和功能调用。
  2. 2. 函数调用/工具使用框架: 这些框架帮助开发者定义AI可以调用的后端服务或函数(即“工具”),并处理AI模型生成工具调用的解析和执行。它们专注于AI的“大脑”部分,但通常不涉及前端UI或与应用界面的深度集成。
  3. 3. Agent 框架: 一些框架如LangChain、LangGraph等,提供了构建复杂AI智能体工作流的能力,允许定义多个步骤、循环、条件判断等。它们通常是后端框架,专注于智能体的逻辑编排,而与前端应用的集成需要额外的工作。

与这些同类项目相比,CopilotKit的独特之处在于它提供了一个端到端的解决方案,特别强调AI与应用前端的深度集成。它不仅提供UI组件(尽管也支持无头模式),更重要的是提供了一套基础设施,使得前端数据(Frontend RAG)、前端UI状态、前端操作(Actions)能够无缝地暴露给AI,并且AI能够触发前端的响应或UI更新(Generative UI, Agentic UI)。其CoAgents框架也将复杂的Agent逻辑与React应用的状态管理紧密结合。这使得开发者能够更容易地构建出真正“在应用内工作”的AI Copilots和智能体,而不仅仅是将AI能力简单地通过一个独立的聊天窗口暴露出来。