workerAgent:基于LangChain.js的AI代理开发学习项目

Agent学习项目,打造个人专属Agent

分支1Tags0
文件最后提交记录最后更新时间
6 个月前
6 个月前
7 个月前
7 个月前
6 个月前
6 个月前
6 个月前
6 个月前
6 个月前
6 个月前
7 个月前
7 个月前
7 个月前
6 个月前
6 个月前
6 个月前
6 个月前

Worker Agent

一个基于LangChain.js的AI代理开发学习项目,帮助开发者快速掌握智能代理开发技术,打造个人专属Agent。集成了服务器、RAG(检索增强生成)、工作流和智能代理功能,适合学习和定制化开发。

项目特性

  • 智能代理:基于LangChain.js构建的AI代理,支持工具调用和MCP集成
  • API服务器:提供OpenAI兼容的API接口,支持流式响应
  • RAG系统:检索增强生成,支持本地文档和网页内容加载
  • 工作流:线性工作流实现,适合学习基础工作流设计
  • MCP支持:模型上下文协议,用于IDE集成
  • 可扩展性:模块化设计,易于扩展和定制

快速开始

1. 安装依赖

npm install

2. 环境变量配置

在项目根目录创建.env文件,配置以下环境变量:

环境变量 描述 必填 默认值
OPENAI_API_KEY OpenAI API密钥(可选) -
SERVER_API_KEY 用于验证API请求的密钥 随机生成
PORT 服务器端口 3000

3. 启动服务器

npm start

4. 运行Agent

npm run agent

1. 创建一个Agent

1.1 直接运行默认Agent

作为一个AI代理开发学习项目,Genius Agent提供了现成的Agent实现,您可以直接运行体验:

npm run agent

运行后,您可以在终端中与Agent进行交互式对话,输入"exit"退出。

1.2 自定义Agent(打造个人专属)

学习Agent开发的核心就是自定义Agent,您可以通过修改agent.js文件来打造个人专属Agent

  • 配置模型:在config/modelConfig.js中配置您使用的语言模型
  • 添加工具:在tools/目录中添加新的工具定义
  • 集成MCP:在config/mcpConfig.js中配置MCP服务器

1.3 通过API使用Agent

启动API服务器后,您可以通过OpenAI兼容的API接口使用您的专属Agent:

npm start

服务器启动后,会在控制台输出API密钥和访问地址。

然后使用curl或其他HTTP客户端调用:

curl -X POST http://localhost:3000/v1/chat/completions \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{"messages": [{"role": "user", "content": "你好"}], "stream": false}'

API接口支持以下功能:

  • 流式响应:设置stream: true开启流式输出
  • 多轮对话:通过传递完整的消息历史实现
  • API密钥验证:支持多种方式传递API密钥

2. 搭建Workflow工作流

2.1 运行内置工作流

项目包含一个线性工作流示例,适合学习工作流设计:

node workflow/workflow.js

2.2 工作流测试

运行工作流测试以验证其功能:

node test/test-workflow.js

2.3 自定义工作流(打造专属流程)

学习工作流设计的关键是自定义工作流,您可以通过修改workflow/workflow.js文件来设计专属工作流

2.4 工作流原理

当前工作流实现了以下线性流程,适合学习基础工作流设计:

  1. 处理输入:总结用户输入内容
  2. 分析内容:分析输入的情感倾向
  3. 生成回复:基于分析结果生成友好的最终回复

2.5 工作流示例

项目中包含一个Excel文件处理工作流示例,展示了如何使用工作流处理表格数据:

node workflow/test-workflow.js

3. 接入RAG知识库

3.1 RAG系统概述

RAG(检索增强生成)系统允许您的Agent访问外部知识库,提高回答的准确性和相关性。

3.2 运行RAG系统

cd RAG
node agent.js

3.3 自定义RAG(打造专属知识库)

学习RAG技术的核心是自定义RAG系统,您可以通过修改以下文件来打造专属知识库

  • RAG/rag.js:RAG核心实现,调整检索和生成逻辑
  • RAG/documentLoader.js:文档加载器,支持更多文档格式
  • RAG/vectorStore.js:向量存储配置,优化向量检索效果
  • RAG/webLoader.js:网页内容加载器,扩展知识来源

3.4 添加知识库内容

为您的专属Agent添加个性化知识库:

  1. 编辑RAG/data/sample_knowledge.txt添加本地文档内容
  2. 或修改RAG/webLoader.js来加载网页内容
  3. 支持多种文档格式和来源,打造您的专属知识体系

3.5 RAG工作原理

学习RAG技术的关键是理解其工作原理:

  1. 文档加载:从本地文件或网页加载文档
  2. 文本分割:将文档分割为可管理的 chunks
  3. 向量存储:将 chunks 转换为向量并存储
  4. 检索:根据用户查询检索相关 chunks
  5. 生成:基于检索结果生成回复

3.6 RAG集成到Agent

您可以通过修改tools/ragTool.js文件将RAG功能集成到您的Agent中,使其能够访问知识库内容。

4. 用户界面集成

4.1 API接口集成

Genius Agent提供了OpenAI兼容的API接口,您可以将其集成到各种用户界面中:

  1. 确保Genius Agent API服务器正在运行:

    npm start
    
  2. 在您选择的前端框架中配置API连接:

    • API地址:http://localhost:3000/v1/chat/completions
    • API密钥:使用环境变量中配置的SERVER_API_KEY

4.2 测试界面

项目中包含了测试界面,您可以使用它们来测试API功能:

  • test/testServer.html:测试服务器API
  • test/test-stream.html:测试流式响应

4.3 前端集成示例

以下是一个简单的前端集成示例:

// 发送消息到Agent
async function sendMessage(messages) {
  const response = await fetch('http://localhost:3000/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${API_KEY}`
    },
    body: JSON.stringify({
      messages: messages,
      stream: true
    })
  });

  // 处理流式响应
  const reader = response.body.getReader();
  const decoder = new TextDecoder();
  
  while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    
    const chunk = decoder.decode(value);
    // 处理每个数据块
    console.log(chunk);
  }
}

5. IDE集成

5.1 MCP服务器

Genius Agent支持MCP(模型上下文协议),可以集成到各种IDE中:

  1. 启动MCP服务器:

    npm run mcp
    
  2. 在IDE中安装相应的AI助手插件

  3. 配置MCP工具连接到您的专属Agent:

{
  "mcpServers": {
    "genius-agent-mcp": {
      "command": "node",
      "args": [
        "mcp-server.js"
      ],
      "cwd": "geniusAgent" // 项目路径
    }
  }
}

5.2 IDE集成方式

Genius Agent支持两种IDE集成方式:

  • A2A(Agent-to-Agent):Agent之间的直接通信
  • Agents to Tools (MCP):通过模型上下文协议将Agent作为工具集成到IDE中

6. 扩展与定制(打造个人专属)

作为一个AI代理开发学习项目,Genius Agent鼓励您进行扩展和定制,打造真正的个人专属Agent

6.1 添加新工具

tools/ 目录中添加新的工具定义,增强您的专属Agent能力:

// tools/my-tool.js
import { Tool } from "@langchain/core/tools";

export class MyTool extends Tool {
  name = "my-tool";
  description = "我的自定义工具";
  
  async _call(input) {
    // 实现您需要的工具逻辑
    return `工具执行结果: ${input}`;
  }
}

6.2 扩展工作流

修改 workflow/workflow.js 文件来扩展工作流步骤或逻辑,定制您的专属工作流程。

6.3 自定义RAG

修改 RAG/rag.js 或相关文件来调整RAG的行为,优化您的专属知识库:

  • 更改向量模型
  • 调整检索参数
  • 添加新的文档加载器

6.4 扩展API

server/server.js 中添加新的API端点,扩展您的专属Agent服务:

// server/server.js
app.post("/v1/my-endpoint", authenticate, async (req, res) => {
  // 实现您需要的自定义API逻辑
  res.json({ result: "success" });
});

7. openCode实践

Genius Agent支持openCode实践,通过以下步骤参与:

  1. 技能开发:在 .opencode/skills/ 目录中创建和分享自定义技能
  2. 工具贡献:开发新工具并提交PR
  3. 文档完善:改进项目文档和示例

8. 学习路径

作为一个AI代理开发学习项目,我们建议您按照以下路径学习:

  1. 基础入门:运行默认Agent,了解基本功能
  2. API开发:学习server/server.js的实现,理解API服务
  3. 工作流设计:修改workflow/workflow.js,学习工作流设计
  4. RAG技术:定制RAG系统,理解检索增强生成
  5. 工具集成:添加自定义工具,增强Agent能力
  6. 界面开发:集成前端界面,实现用户交互
  7. IDE集成:将Agent接入到IDE中
  8. 全栈定制:整合所有功能,打造完整的个人专属Agent

9. 许可证

MIT License

10. 联系方式

如果您有任何问题或建议,欢迎通过以下方式联系我们:

  • GitHub:提交Issue或PR
  • Email:[your-email@example.com](替换为实际邮箱)

项目介绍

Agent学习项目,打造个人专属Agent

定制我的领域