跳转到主要内容

概述

LlamaIndexAgent 将 AG-Kit 连接到 LlamaIndex TS 工作流系统。它可以:
  • 从 llm、tools 和 systemPrompt 构建简单的单代理工作流
  • 或通过 workflowFactory 接受自定义工作流
  • 流式传输 AG-UI 兼容的事件(文本块、工具调用/结果)
  • 通过 memoryFactory 维护每个线程的对话记忆
在底层,它使用 AguiLlamaIndexWorkflow 将 LlamaIndex 工作流事件转换为 @ag-ui/client 的 BaseEvent。

安装

pnpm add @ag-kit/agents @ag-kit/adapter-llamaindex llamaindex @llamaindex/openai @llamaindex/workflow zod

导出

所有导出都可以从 @ag-kit/adapter-llamaindex 获取: 导出:
  • LlamaIndexAgent - LlamaIndex 集成的主代理类
  • AguiLlamaIndexWorkflow - 构建可运行工作流(单代理或多代理)的实用工具

快速入门(单代理)

import { LlamaIndexAgent } from "@ag-kit/adapter-llamaindex";
import { OpenAI } from "@llamaindex/openai";

const llm = new OpenAI({
  model: process.env.OPENAI_MODEL!,
  apiKey: process.env.OPENAI_API_KEY!,
  baseURL: process.env.OPENAI_BASE_URL!,
});

export const agent = new LlamaIndexAgent({
  name: "llamaindex-agent",
  description: "Single-agent with LlamaIndex LLM",
  llm,
  // tools, systemPrompt 在这里是可选的
});

自定义工作流(多代理或高级)

import { LlamaIndexAgent, AguiLlamaIndexWorkflow } from "@ag-kit/adapter-llamaindex";

export const agent = new LlamaIndexAgent({
  name: "multi-agent",
  workflowFactory: () => {
    // 使用 AguiLlamaIndexWorkflow 辅助方法构建
    return AguiLlamaIndexWorkflow.fromTools({
      name: "Orchestrator",
      llm,
      tools,
      systemPrompt: "You are the orchestrator",
    });
  },
});

服务器集成

import { run } from "@ag-kit/server";
import { agent } from "./agent";

run({ createAgent: () => ({ agent }) });

API

class LlamaIndexAgent

new LlamaIndexAgent(config: AgentConfig & {
  // 基本单代理参数(当未提供 workflowFactory 时使用)
  llm?: LLM;
  tools?: BaseTool[];
  systemPrompt?: string;
  name?: string;
  // 高级:提供您自己的可运行工作流
  workflowFactory?: () => RunnableWorkflow;
  // 可选的对话记忆提供者
  memoryFactory?: () => Memory;
})
name
string
代理的唯一标识符。如果省略,默认为 “Agent”
description
string
代理的可读描述。
llm
LLM
LlamaIndex LLM 实例。在构建默认单代理工作流时使用。
tools
BaseTool[]
LlamaIndex 工具数组。这些工具在代理执行期间被调用。
systemPrompt
string
在用户消息之前注入的可选系统提示。
workflowFactory
() => RunnableWorkflow
提供自定义工作流。当存在时,它会覆盖默认的单代理工作流。
memoryFactory
() => Memory
每个线程的对话记忆工厂。

方法

run()
run(input: RunAgentInput): Observable<BaseEvent>
执行工作流并从 @ag-ui/client 发出 BaseEvent 值。
  • input - RunAgentInput,包含 messages、runId、threadId、tools 等。
  • returns - Observable<BaseEvent>
注意:事件类型遵循与 LanggraphAgent 相同的语义(RUN_STARTED、TEXT_MESSAGE_CONTENT、TOOL_CALL_START、TOOL_CALL_ARGS、TOOL_CALL_RESULT、RUN_FINISHED 等)。

另见