Skip to main content

VeighNa agent framework.

Project description

VNAG - Your Agent, Your Data.

VNAG Screenshot

VeighNa Agent (vnag) 是一款专为AI Agent开发而设计的Python框架,致力于为开发者提供简洁、强大且易于扩展的Agent构建工具。秉承"Your Agent, Your Data"的理念,vnag让您能够完全掌控自己的AI Agent和数据流程。

项目介绍

vnag是VeighNa团队推出的全新AI Agent开发框架,旨在降低AI Agent开发的门槛,让更多开发者能够快速构建属于自己的智能助手。

核心特点

  • 🤖 可定制智能体: 轻松创建和管理多个智能体,每个都可拥有独立的角色(系统提示词)、能力(工具集)和行为模式(模型参数)。
  • 🔧 双核工具体系: 同时支持简单易用的本地函数工具和功能强大的 MCP 远程工具。
  • 🧠 技能系统: 两级加载机制,让智能体按需加载专业操作指南,避免上下文膨胀。
  • 🔌 统一API接口:支持OpenAI兼容的各种大模型API
  • 🎨 现代化UI:基于PySide6的图形化界面,不仅是聊天窗口,更是强大的智能体调试和管理工具。
  • ⌨️ 命令行界面:基于Prompt Toolkit的CLI交互界面,适合终端环境下使用。
  • 📝 智能对话:支持Markdown渲染的聊天界面
  • 💾 数据管控:本地化的对话历史和配置管理
  • 🧩 易于扩展:清晰的模块化架构,便于二次开发

适用场景

  • AI聊天机器人开发
  • 智能客服系统
  • 知识问答助手
  • 个人AI助理
  • 企业内部智能工具

环境准备与安装

1. 克隆项目

git clone https://github.com/vnpy/vnag.git
cd vnag

2. (推荐) 创建并激活虚拟环境

为了保持项目依赖的隔离,强烈建议您使用 Python 虚拟环境。

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境 (Windows)
.\venv\Scripts\activate

# 激活虚拟环境 (macOS/Linux)
source venv/bin/activate

3. 安装依赖

# 从源码安装项目及其依赖
pip install -e .

快速开始

您的第一个 Agent (3步搞定)

跟随以下三个步骤,您将在3分钟内启动一个功能完备的聊天机器人UI。

第1步:安装依赖

如果您已经完成了上一章节 "环境准备与安装" 的操作,那么依赖已经安装完毕,可以跳过此步。

第2步:配置API密钥

vnag 需要 API 密钥来与大模型服务进行通信。

  1. 请参考 "配置" 章节的说明,在 .vnag 目录下创建一个 connect_xxx.json 文件(如 connect_openai.jsonconnect_deepseek.json 等)。
  2. 打开该文件,填入对应服务的 API Key 和 Base URL。
  3. 您也可以通过UI界面【菜单栏-功能-AI服务配置】可视化配置API服务。

第3步:运行聊天UI

一切准备就绪!在项目根目录下运行以下命令:

python examples/ui/run_chat_ui.py

现在,您应该能看到一个美观的聊天窗口了!恭喜您成功运行了第一个 Agent!

运行后,您将看到一个完整的 Agent 管理界面。在这里,您可以创建和配置自己的智能体(Agent),定义它的系统提示词(System Prompt)、选择需要使用的工具、并调整模型参数(如温度)等。

自定义您的 Agent

vnag 0.2.0 引入了 TaskAgentProfile 的概念,让您可以轻松定义和管理多个具有不同功能和行为的智能体。

核心概念:

  • Agent (智能体): 一个独立的智能体实例,拥有自己的对话历史和配置。
  • Profile (配置): 定义了 Agent 行为的配置模板,包括:
    • 系统提示词 (Prompt): 设定 Agent 的角色和行为准则。
    • 工具集 (Tools): 从本地工具和MCP工具中选择 Agent 可以使用的工具。
    • 模型参数: 如 temperature, max_tokens 等,用于控制模型的生成行为。需要注意的是,部分模型会固定使用 1.0 或忽略自定义温度。

两种方式来自定义 Agent:

  1. 通过UI界面(推荐): 运行 python examples/ui/run_chat_ui.py 启动图形化界面。在界面中,您可以直观地创建和管理 Profile,然后基于选定的 Profile 创建 Agent 实例进行对话。

  2. 通过代码: examples/agent/run_task_agent.py 脚本详细演示了如何通过代码来创建 Profile 对象,并使用 AgentEngine 来创建一个 TaskAgent 实例。这为您提供了更大的灵活性,可以将 vnag 集成到您自己的应用程序中。

功能示例

examples 目录提供了丰富的示例脚本,帮助您快速了解和掌握 vnag 框架的各项功能。所有示例均可在项目根目录下直接运行。

功能模块 示例脚本 说明
Gateway
网关
run_completion_gateway.py
run_anthropic_gateway.py
run_dashscope_gateway.py
run_ollama_gateway.py
测试与不同大模型提供商的 API 连接
Segmenter
分段器
run_simple_segmenter.py
run_markdown_segmenter.py
run_python_segmenter.py
run_cpp_segmenter.py
将不同类型的文档切分为结构化数据段
Vector
向量库
run_chromadb_demo.py
run_qdrant_demo.py
run_duckdb_demo.py
文本向量化存储和相似度搜索
RAG run_ctp_rag.py 完整的 RAG 流程:分段、入库、检索生成
Tool
工具
run_local_tool.py
run_mcp_tool.py
本地工具和 MCP 远程工具调用
Agent
智能体
run_task_agent.py
run_agent_tool.py
通过代码创建和配置 TaskAgent
UI
界面
run_chat_ui.py 图形化智能体管理和调试界面

运行示例:

# 示例:测试 OpenAI Gateway
python examples/gateway/run_completion_gateway.py

# 示例:运行聊天 UI
python examples/ui/run_chat_ui.py

# 其他示例类似,将对应路径和文件名替换即可

配置

vnag 采用统一的配置文件管理机制,所有配置文件都存放在名为 .vnag 的隐藏目录中。

加载逻辑

  1. 优先加载当前目录:程序启动时,会首先检查当前工作路径下是否存在 .vnag 目录。如果存在,则会直接加载该目录下的所有配置文件。
  2. 备选用户主目录:如果当前工作路径下没有 .vnag 目录,程序会自动在您的系统用户主目录(Home Directory)下寻找并使用 .vnag 目录。如果该目录不存在,程序会自动创建。

通过这种方式,您可以为不同的项目设置独立的本地配置,或者配置一个全局共享的配置。

配置文件示例

网关连接配置

每个网关对应一个 connect_{gateway_name}.json 文件,存放在 .vnag/ 目录下。

// connect_openai.json(OpenAI 及兼容接口)
{
    "api_key": "sk-YourOpenAIKey",
    "base_url": "https://api.openai.com/v1"
}
// connect_deepseek.json(DeepSeek,支持思维链推理)
{
    "api_key": "sk-YourDeepSeekKey",
    "base_url": "https://api.deepseek.com"
}

支持的网关:OpenAI、Anthropic、Dashscope、Ollama、DeepSeek、智谱、火山引擎、Moonshot、MiniMax、百炼、OpenRouter、LiteLLM、Bedrock、Gemini。各网关的完整配置示例请参考 Gateway 文档

MCP 配置

MCP 工具通过 .vnag/mcp_config.json 配置,依赖本地 Node.js 环境:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
    }
  }
}

项目结构

vnag/
├── vnag/                # 核心框架
│   ├── agent.py         # 智能体(TaskAgent / AgentTool)
│   ├── engine.py        # 智能体引擎
│   ├── skill.py         # 技能系统
│   ├── gateways/        # 大模型网关(15 种)
│   ├── tools/           # 内置本地工具(9 类)
│   ├── segmenters/      # RAG 分段器
│   ├── embedders/       # RAG 嵌入器
│   ├── vectors/         # RAG 向量库
│   ├── ui/              # GUI 图形界面
│   └── cli/             # CLI 命令行界面
├── examples/            # 功能示例脚本
├── skills/              # 技能文件目录
└── docs/                # 项目文档

各模块的详细说明请参考 核心概念核心组件 文档。

内置工具

vnag 内置了日期时间、文件系统、网络、终端与系统、代码执行、Web、联网搜索、待办管理、交互提问等 9 类本地工具,开箱即用。其中文件系统工具支持全文读取、带行号分段读取、字符串替换与按行块替换,适合代码编辑与自动化修订场景;交互工具支持模型在 GUI 或 CLI 中主动向用户提问并等待回答。完整的工具列表和使用说明请参考 Tool 文档

功能概览

模块 说明
Agent 引擎 ReAct 循环编排、多轮对话、Profile 配置、技能系统、执行追踪
LLM 网关 OpenAI、Anthropic、Dashscope、Ollama、DeepSeek、智谱、火山引擎、Moonshot、MiniMax、百炼、OpenRouter、LiteLLM、Bedrock、Gemini,支持流式输出和思维链
工具系统 本地函数工具、MCP 远程工具、9 类内置工具,支持交互式提问工具
RAG 4 种分段器(Simple / Markdown / Python / C++)、3 种嵌入器(OpenAI / Dashscope / SentenceTransformers)、3 种向量库(ChromaDB / Qdrant / DuckDB)
图形界面 基于 PySide6 的聊天 UI,支持 Profile 管理、多智能体切换、Markdown 渲染、Thinking 显示和交互式工具提问
命令行界面 基于 Prompt Toolkit 的 CLI,支持自动补全、Markdown 终端渲染和交互式工具提问

详细的功能更新记录请参考 CHANGELOG

贡献代码

我们欢迎所有形式的贡献!无论是bug报告、功能建议还是代码贡献。

开发流程

  1. Fork 本项目:点击 GitHub 页面右上角的 Fork 按钮
  2. 克隆到本地git clone https://github.com/your-username/vnag.git
  3. 创建功能分支git checkout -b feature/AmazingFeature
  4. 进行开发:编写代码、添加测试、更新文档
  5. 提交更改git commit -m 'Add some AmazingFeature'
  6. 推送到远程git push origin feature/AmazingFeature
  7. 提交 Pull Request:在 GitHub 上创建 PR,详细描述您的更改

代码规范

项目使用以下工具确保代码质量:

  • Ruff:代码格式化和 linting
  • MyPy:静态类型检查

在提交代码前,请运行:

# 代码检查
ruff check .

# 类型检查
mypy vnag

# 运行测试
python -m unittest discover -s tests -p "test_*.py" -v

问题反馈

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

版权说明

本项目采用MIT开源协议,详情请参阅LICENSE文件。


立即开始您的AI Agent开发之旅!🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vnag-0.9.0.tar.gz (208.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vnag-0.9.0-py3-none-any.whl (251.0 kB view details)

Uploaded Python 3

File details

Details for the file vnag-0.9.0.tar.gz.

File metadata

  • Download URL: vnag-0.9.0.tar.gz
  • Upload date:
  • Size: 208.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.3

File hashes

Hashes for vnag-0.9.0.tar.gz
Algorithm Hash digest
SHA256 40f93ee568f64bcd1b0bef1b160133a08d79fd6f8732863d15b8c6ffda90bc9f
MD5 9e91d0b786737f3bf713ee1c7c00ee0a
BLAKE2b-256 a7fbda9031178e9ca5e1365c62f9002619017cace7ad295a9ca6eb992968701e

See more details on using hashes here.

File details

Details for the file vnag-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: vnag-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 251.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.3

File hashes

Hashes for vnag-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2e9cc65dacb2c651f4d53639a2ad3473cd35728133aa8609db200ee2f01a458c
MD5 c4668711cd2084abac0d5036c4488bbd
BLAKE2b-256 305467f0791fae518aa806c8c58595458f6b0eaa16ce8b1f4067af77dc409e9e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page