nagaagent-core


Namenagaagent-core JSON
Version 1.0.0 PyPI version JSON
download
home_pagehttps://github.com/Xxiii8322766509/NagaAgent
Summary娜迦AI助手核心功能包 - 基础框架,包含API服务器、Agent框架、日志管理等核心组件
upload_time2025-09-14 15:44:48
maintainerNone
docs_urlNone
authorNagaAgent Team
requires_python>=3.8
licenseMIT
keywords ai assistant mcp streaming tool-calling chat api framework core
VCS
bugtrack_url
requirements nagaagent-core mcp openai openai-agents python-dotenv requests aiohttp pytz colorama python-dateutil py2neo pyvis matplotlib flask-cors flask gevent fastapi uvicorn librosa websockets numpy pandas scipy transformers pydantic pydantic-settings httpx typing-extensions pyqt5 playwright greenlet pyee pygame html2text sounddevice pyaudio edge-tts emoji pystray pillow screen-brightness-control pycaw comtypes jmcomic fastmcp paho-mqtt tiktoken python-docx live2d-py pyopengl toml opensimplex langchain-community crawl4ai onnxruntime
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # NagaAgent_core - 娜迦AI助手核心功能包

这是一个包含娜迦AI助手核心框架的Python包,提供流式工具调用、MCP管理器、消息管理、Web API服务器、Agent框架、日志管理等基础组件,作为开发AI助手应用的基础依赖。

## 功能特点

### 核心功能
- **流式工具调用**: 支持实时提取和处理AI响应中的工具调用
- **MCP管理器**: 统一管理MCP服务的连接和调用
- **消息管理器**: 处理对话历史和会话管理
- **工具调用工具**: 提供工具调用的解析和执行功能

### 新增功能 (v2.0.0)
- **Web API服务器**: 基于FastAPI的RESTful API和WebSocket支持
- **Agent框架**: 统一的Agent基础类和注册表管理
- **日志管理**: 完整的日志解析、上下文管理和持久化存储
- **模块化设计**: 清晰的模块分离,易于扩展和定制

## 安装

### 基础安装
```bash
pip install NagaAgent-core
```

### 完整安装(包含所有功能)
```bash
pip install NagaAgent-core[api,framework]
```

### 开发安装
```bash
pip install NagaAgent-core[dev]
```

## 快速开始

### 1. 流式工具调用

```python
from NagaAgent_core.streaming import StreamingToolCallExtractor

# 创建提取器
extractor = StreamingToolCallExtractor(mcp_manager)

# 设置回调函数
def on_text_chunk(text: str, chunk_type: str):
    print(f"文本块: {text}")

def on_tool_call(tool_call: str, tool_type: str):
    print(f"工具调用: {tool_call}")

extractor.set_callbacks(
    on_text_chunk=on_text_chunk,
    on_tool_call=on_tool_call
)

# 处理流式响应
await extractor.process_text_chunk("一些文本内容")
```

### 2. MCP管理器

```python
from NagaAgent_core.mcp import MCPManager

# 创建管理器
manager = MCPManager()

# 注册服务
manager.register_handoff(
    service_name="my_service",
    tool_name="my_tool",
    tool_description="我的工具",
    input_schema={"type": "object"},
    agent_name="MyAgent"
)

# 调用服务
result = await manager.handoff("my_service", {"param": "value"})
```

### 3. 消息管理器

```python
from NagaAgent_core.messages import MessageManager

# 创建管理器
manager = MessageManager()

# 创建会话
session_id = manager.create_session()

# 添加消息
manager.add_message(session_id, "user", "你好")
manager.add_message(session_id, "assistant", "你好!有什么可以帮助你的吗?")

# 获取消息历史
messages = manager.get_messages(session_id)
```

### 4. Web API服务器

```python
from NagaAgent_core.api import NagaAPIServer

# 创建API服务器
server = NagaAPIServer(host="127.0.0.1", port=8000)

# 运行服务器
server.run()

# 或者使用命令行
# naga-api --host 127.0.0.1 --port 8000
```

### 5. Agent框架使用

```python
from NagaAgent_core.agents import AgentRegistry, BaseAgent

# 创建自定义Agent
class MyCustomAgent(BaseAgent):
    def __init__(self):
        super().__init__(
            name="my_agent",
            instructions="我的自定义Agent"
        )
    
    async def handle_handoff(self, data: dict) -> str:
        # 实现具体的处理逻辑
        return f"处理结果: {data}"

# 创建Agent注册表
registry = AgentRegistry()

# 注册Agent
registry.register_agent_class("my_agent", MyCustomAgent)

# 创建Agent实例
agent = registry.create_agent("my_agent")

# 调用Agent
result = await registry.call_agent("my_agent", {"param": "value"})
```

### 6. 日志和上下文管理

```python
from NagaAgent_core.logs import LogManager, ContextManager

# 创建日志管理器
log_manager = LogManager()

# 记录对话
log_manager.log_conversation(
    session_id="session_1",
    user_message="你好",
    assistant_message="你好!有什么可以帮助你的吗?"
)

# 创建上下文管理器
context_manager = ContextManager()

# 加载历史上下文
context = context_manager.load_persistent_context(session_id="session_1")

# 构建对话上下文
messages = context_manager.build_conversation_context(
    session_id="session_1",
    system_prompt="你是一个AI助手",
    current_message="今天天气怎么样?"
)
```

## API文档

启动API服务器后,可以访问以下端点:

- **API文档**: http://localhost:8000/docs
- **健康检查**: http://localhost:8000/system/health
- **系统信息**: http://localhost:8000/system/info
- **WebSocket**: ws://localhost:8000/ws/mcplog

## 命令行工具

### 启动API服务器
```bash
naga-api --host 127.0.0.1 --port 8000
```

### 运行核心功能测试
```bash
NagaAgent-core test --component all
```

## 项目结构

```
NagaAgent_core/
├── streaming/          # 流式处理模块
├── mcp/               # MCP管理模块
├── messages/          # 消息管理模块
├── tools/             # 工具调用模块
├── api/               # API服务器模块
│   ├── server.py      # 主服务器
│   ├── websocket.py   # WebSocket管理
│   └── routes/        # API路由
├── agents/            # Agent框架模块
│   ├── registry.py    # Agent注册表
│   └── base.py        # 基础Agent类
└── logs/              # 日志管理模块
    ├── parser.py      # 日志解析器
    ├── manager.py     # 日志管理器
    └── context.py     # 上下文管理器
```

## 版本历史

### v2.0.0 (最新)
- ✅ 新增Web API服务器
- ✅ 新增Agent框架
- ✅ 新增日志和上下文管理
- ✅ 提供基础框架,支持自定义Agent开发
- ✅ 完善包结构和配置

### v1.0.0
- ✅ 基础流式工具调用
- ✅ MCP管理器
- ✅ 消息管理器
- ✅ 工具调用解析

## 使用说明

### 作为基础依赖包使用

NagaAgent_core设计为一个基础框架包,不包含具体的Agent实现。你可以:

1. **安装基础包**:
   ```bash
   pip install NagaAgent-core
   ```

2. **创建自定义Agent**:
   ```python
   from NagaAgent_core.agents import BaseAgent
   
   class MyAgent(BaseAgent):
       async def handle_handoff(self, data: dict) -> str:
           # 实现你的业务逻辑
           return "处理完成"
   ```

3. **集成到现有项目**:
   ```python
   from NagaAgent_core import MCPManager, MessageManager
   
   # 使用核心组件
   mcp_manager = MCPManager()
   message_manager = MessageManager()
   ```

### 扩展开发

- 继承`BaseAgent`类创建自定义Agent
- 使用`AgentRegistry`管理Agent生命周期
- 通过`MCPManager`集成外部服务
- 利用`LogManager`和`ContextManager`管理对话历史

## 许可证

本项目采用MIT许可证。详见LICENSE文件。

## 贡献

欢迎提交Issue和Pull Request来改进这个项目。

## 更新日志

### v1.0.0
- 初始版本发布
- 包含流式工具调用、MCP管理器、消息管理器等核心功能

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Xxiii8322766509/NagaAgent",
    "name": "nagaagent-core",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "NagaAgent Team <naga@example.com>",
    "keywords": "ai, assistant, mcp, streaming, tool-calling, chat, api, framework, core",
    "author": "NagaAgent Team",
    "author_email": "NagaAgent Team <naga@example.com>",
    "download_url": "https://files.pythonhosted.org/packages/37/a6/cbe25d28dfeaefed2be8a6e2ae68f6061122f77c635c39f47178f6f2f818/nagaagent_core-1.0.0.tar.gz",
    "platform": null,
    "description": "# NagaAgent_core - \u5a1c\u8fe6AI\u52a9\u624b\u6838\u5fc3\u529f\u80fd\u5305\r\n\r\n\u8fd9\u662f\u4e00\u4e2a\u5305\u542b\u5a1c\u8fe6AI\u52a9\u624b\u6838\u5fc3\u6846\u67b6\u7684Python\u5305\uff0c\u63d0\u4f9b\u6d41\u5f0f\u5de5\u5177\u8c03\u7528\u3001MCP\u7ba1\u7406\u5668\u3001\u6d88\u606f\u7ba1\u7406\u3001Web API\u670d\u52a1\u5668\u3001Agent\u6846\u67b6\u3001\u65e5\u5fd7\u7ba1\u7406\u7b49\u57fa\u7840\u7ec4\u4ef6\uff0c\u4f5c\u4e3a\u5f00\u53d1AI\u52a9\u624b\u5e94\u7528\u7684\u57fa\u7840\u4f9d\u8d56\u3002\r\n\r\n## \u529f\u80fd\u7279\u70b9\r\n\r\n### \u6838\u5fc3\u529f\u80fd\r\n- **\u6d41\u5f0f\u5de5\u5177\u8c03\u7528**: \u652f\u6301\u5b9e\u65f6\u63d0\u53d6\u548c\u5904\u7406AI\u54cd\u5e94\u4e2d\u7684\u5de5\u5177\u8c03\u7528\r\n- **MCP\u7ba1\u7406\u5668**: \u7edf\u4e00\u7ba1\u7406MCP\u670d\u52a1\u7684\u8fde\u63a5\u548c\u8c03\u7528\r\n- **\u6d88\u606f\u7ba1\u7406\u5668**: \u5904\u7406\u5bf9\u8bdd\u5386\u53f2\u548c\u4f1a\u8bdd\u7ba1\u7406\r\n- **\u5de5\u5177\u8c03\u7528\u5de5\u5177**: \u63d0\u4f9b\u5de5\u5177\u8c03\u7528\u7684\u89e3\u6790\u548c\u6267\u884c\u529f\u80fd\r\n\r\n### \u65b0\u589e\u529f\u80fd (v2.0.0)\r\n- **Web API\u670d\u52a1\u5668**: \u57fa\u4e8eFastAPI\u7684RESTful API\u548cWebSocket\u652f\u6301\r\n- **Agent\u6846\u67b6**: \u7edf\u4e00\u7684Agent\u57fa\u7840\u7c7b\u548c\u6ce8\u518c\u8868\u7ba1\u7406\r\n- **\u65e5\u5fd7\u7ba1\u7406**: \u5b8c\u6574\u7684\u65e5\u5fd7\u89e3\u6790\u3001\u4e0a\u4e0b\u6587\u7ba1\u7406\u548c\u6301\u4e45\u5316\u5b58\u50a8\r\n- **\u6a21\u5757\u5316\u8bbe\u8ba1**: \u6e05\u6670\u7684\u6a21\u5757\u5206\u79bb\uff0c\u6613\u4e8e\u6269\u5c55\u548c\u5b9a\u5236\r\n\r\n## \u5b89\u88c5\r\n\r\n### \u57fa\u7840\u5b89\u88c5\r\n```bash\r\npip install NagaAgent-core\r\n```\r\n\r\n### \u5b8c\u6574\u5b89\u88c5\uff08\u5305\u542b\u6240\u6709\u529f\u80fd\uff09\r\n```bash\r\npip install NagaAgent-core[api,framework]\r\n```\r\n\r\n### \u5f00\u53d1\u5b89\u88c5\r\n```bash\r\npip install NagaAgent-core[dev]\r\n```\r\n\r\n## \u5feb\u901f\u5f00\u59cb\r\n\r\n### 1. \u6d41\u5f0f\u5de5\u5177\u8c03\u7528\r\n\r\n```python\r\nfrom NagaAgent_core.streaming import StreamingToolCallExtractor\r\n\r\n# \u521b\u5efa\u63d0\u53d6\u5668\r\nextractor = StreamingToolCallExtractor(mcp_manager)\r\n\r\n# \u8bbe\u7f6e\u56de\u8c03\u51fd\u6570\r\ndef on_text_chunk(text: str, chunk_type: str):\r\n    print(f\"\u6587\u672c\u5757: {text}\")\r\n\r\ndef on_tool_call(tool_call: str, tool_type: str):\r\n    print(f\"\u5de5\u5177\u8c03\u7528: {tool_call}\")\r\n\r\nextractor.set_callbacks(\r\n    on_text_chunk=on_text_chunk,\r\n    on_tool_call=on_tool_call\r\n)\r\n\r\n# \u5904\u7406\u6d41\u5f0f\u54cd\u5e94\r\nawait extractor.process_text_chunk(\"\u4e00\u4e9b\u6587\u672c\u5185\u5bb9\")\r\n```\r\n\r\n### 2. MCP\u7ba1\u7406\u5668\r\n\r\n```python\r\nfrom NagaAgent_core.mcp import MCPManager\r\n\r\n# \u521b\u5efa\u7ba1\u7406\u5668\r\nmanager = MCPManager()\r\n\r\n# \u6ce8\u518c\u670d\u52a1\r\nmanager.register_handoff(\r\n    service_name=\"my_service\",\r\n    tool_name=\"my_tool\",\r\n    tool_description=\"\u6211\u7684\u5de5\u5177\",\r\n    input_schema={\"type\": \"object\"},\r\n    agent_name=\"MyAgent\"\r\n)\r\n\r\n# \u8c03\u7528\u670d\u52a1\r\nresult = await manager.handoff(\"my_service\", {\"param\": \"value\"})\r\n```\r\n\r\n### 3. \u6d88\u606f\u7ba1\u7406\u5668\r\n\r\n```python\r\nfrom NagaAgent_core.messages import MessageManager\r\n\r\n# \u521b\u5efa\u7ba1\u7406\u5668\r\nmanager = MessageManager()\r\n\r\n# \u521b\u5efa\u4f1a\u8bdd\r\nsession_id = manager.create_session()\r\n\r\n# \u6dfb\u52a0\u6d88\u606f\r\nmanager.add_message(session_id, \"user\", \"\u4f60\u597d\")\r\nmanager.add_message(session_id, \"assistant\", \"\u4f60\u597d\uff01\u6709\u4ec0\u4e48\u53ef\u4ee5\u5e2e\u52a9\u4f60\u7684\u5417\uff1f\")\r\n\r\n# \u83b7\u53d6\u6d88\u606f\u5386\u53f2\r\nmessages = manager.get_messages(session_id)\r\n```\r\n\r\n### 4. Web API\u670d\u52a1\u5668\r\n\r\n```python\r\nfrom NagaAgent_core.api import NagaAPIServer\r\n\r\n# \u521b\u5efaAPI\u670d\u52a1\u5668\r\nserver = NagaAPIServer(host=\"127.0.0.1\", port=8000)\r\n\r\n# \u8fd0\u884c\u670d\u52a1\u5668\r\nserver.run()\r\n\r\n# \u6216\u8005\u4f7f\u7528\u547d\u4ee4\u884c\r\n# naga-api --host 127.0.0.1 --port 8000\r\n```\r\n\r\n### 5. Agent\u6846\u67b6\u4f7f\u7528\r\n\r\n```python\r\nfrom NagaAgent_core.agents import AgentRegistry, BaseAgent\r\n\r\n# \u521b\u5efa\u81ea\u5b9a\u4e49Agent\r\nclass MyCustomAgent(BaseAgent):\r\n    def __init__(self):\r\n        super().__init__(\r\n            name=\"my_agent\",\r\n            instructions=\"\u6211\u7684\u81ea\u5b9a\u4e49Agent\"\r\n        )\r\n    \r\n    async def handle_handoff(self, data: dict) -> str:\r\n        # \u5b9e\u73b0\u5177\u4f53\u7684\u5904\u7406\u903b\u8f91\r\n        return f\"\u5904\u7406\u7ed3\u679c: {data}\"\r\n\r\n# \u521b\u5efaAgent\u6ce8\u518c\u8868\r\nregistry = AgentRegistry()\r\n\r\n# \u6ce8\u518cAgent\r\nregistry.register_agent_class(\"my_agent\", MyCustomAgent)\r\n\r\n# \u521b\u5efaAgent\u5b9e\u4f8b\r\nagent = registry.create_agent(\"my_agent\")\r\n\r\n# \u8c03\u7528Agent\r\nresult = await registry.call_agent(\"my_agent\", {\"param\": \"value\"})\r\n```\r\n\r\n### 6. \u65e5\u5fd7\u548c\u4e0a\u4e0b\u6587\u7ba1\u7406\r\n\r\n```python\r\nfrom NagaAgent_core.logs import LogManager, ContextManager\r\n\r\n# \u521b\u5efa\u65e5\u5fd7\u7ba1\u7406\u5668\r\nlog_manager = LogManager()\r\n\r\n# \u8bb0\u5f55\u5bf9\u8bdd\r\nlog_manager.log_conversation(\r\n    session_id=\"session_1\",\r\n    user_message=\"\u4f60\u597d\",\r\n    assistant_message=\"\u4f60\u597d\uff01\u6709\u4ec0\u4e48\u53ef\u4ee5\u5e2e\u52a9\u4f60\u7684\u5417\uff1f\"\r\n)\r\n\r\n# \u521b\u5efa\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\r\ncontext_manager = ContextManager()\r\n\r\n# \u52a0\u8f7d\u5386\u53f2\u4e0a\u4e0b\u6587\r\ncontext = context_manager.load_persistent_context(session_id=\"session_1\")\r\n\r\n# \u6784\u5efa\u5bf9\u8bdd\u4e0a\u4e0b\u6587\r\nmessages = context_manager.build_conversation_context(\r\n    session_id=\"session_1\",\r\n    system_prompt=\"\u4f60\u662f\u4e00\u4e2aAI\u52a9\u624b\",\r\n    current_message=\"\u4eca\u5929\u5929\u6c14\u600e\u4e48\u6837\uff1f\"\r\n)\r\n```\r\n\r\n## API\u6587\u6863\r\n\r\n\u542f\u52a8API\u670d\u52a1\u5668\u540e\uff0c\u53ef\u4ee5\u8bbf\u95ee\u4ee5\u4e0b\u7aef\u70b9\uff1a\r\n\r\n- **API\u6587\u6863**: http://localhost:8000/docs\r\n- **\u5065\u5eb7\u68c0\u67e5**: http://localhost:8000/system/health\r\n- **\u7cfb\u7edf\u4fe1\u606f**: http://localhost:8000/system/info\r\n- **WebSocket**: ws://localhost:8000/ws/mcplog\r\n\r\n## \u547d\u4ee4\u884c\u5de5\u5177\r\n\r\n### \u542f\u52a8API\u670d\u52a1\u5668\r\n```bash\r\nnaga-api --host 127.0.0.1 --port 8000\r\n```\r\n\r\n### \u8fd0\u884c\u6838\u5fc3\u529f\u80fd\u6d4b\u8bd5\r\n```bash\r\nNagaAgent-core test --component all\r\n```\r\n\r\n## \u9879\u76ee\u7ed3\u6784\r\n\r\n```\r\nNagaAgent_core/\r\n\u251c\u2500\u2500 streaming/          # \u6d41\u5f0f\u5904\u7406\u6a21\u5757\r\n\u251c\u2500\u2500 mcp/               # MCP\u7ba1\u7406\u6a21\u5757\r\n\u251c\u2500\u2500 messages/          # \u6d88\u606f\u7ba1\u7406\u6a21\u5757\r\n\u251c\u2500\u2500 tools/             # \u5de5\u5177\u8c03\u7528\u6a21\u5757\r\n\u251c\u2500\u2500 api/               # API\u670d\u52a1\u5668\u6a21\u5757\r\n\u2502   \u251c\u2500\u2500 server.py      # \u4e3b\u670d\u52a1\u5668\r\n\u2502   \u251c\u2500\u2500 websocket.py   # WebSocket\u7ba1\u7406\r\n\u2502   \u2514\u2500\u2500 routes/        # API\u8def\u7531\r\n\u251c\u2500\u2500 agents/            # Agent\u6846\u67b6\u6a21\u5757\r\n\u2502   \u251c\u2500\u2500 registry.py    # Agent\u6ce8\u518c\u8868\r\n\u2502   \u2514\u2500\u2500 base.py        # \u57fa\u7840Agent\u7c7b\r\n\u2514\u2500\u2500 logs/              # \u65e5\u5fd7\u7ba1\u7406\u6a21\u5757\r\n    \u251c\u2500\u2500 parser.py      # \u65e5\u5fd7\u89e3\u6790\u5668\r\n    \u251c\u2500\u2500 manager.py     # \u65e5\u5fd7\u7ba1\u7406\u5668\r\n    \u2514\u2500\u2500 context.py     # \u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\r\n```\r\n\r\n## \u7248\u672c\u5386\u53f2\r\n\r\n### v2.0.0 (\u6700\u65b0)\r\n- \u2705 \u65b0\u589eWeb API\u670d\u52a1\u5668\r\n- \u2705 \u65b0\u589eAgent\u6846\u67b6\r\n- \u2705 \u65b0\u589e\u65e5\u5fd7\u548c\u4e0a\u4e0b\u6587\u7ba1\u7406\r\n- \u2705 \u63d0\u4f9b\u57fa\u7840\u6846\u67b6\uff0c\u652f\u6301\u81ea\u5b9a\u4e49Agent\u5f00\u53d1\r\n- \u2705 \u5b8c\u5584\u5305\u7ed3\u6784\u548c\u914d\u7f6e\r\n\r\n### v1.0.0\r\n- \u2705 \u57fa\u7840\u6d41\u5f0f\u5de5\u5177\u8c03\u7528\r\n- \u2705 MCP\u7ba1\u7406\u5668\r\n- \u2705 \u6d88\u606f\u7ba1\u7406\u5668\r\n- \u2705 \u5de5\u5177\u8c03\u7528\u89e3\u6790\r\n\r\n## \u4f7f\u7528\u8bf4\u660e\r\n\r\n### \u4f5c\u4e3a\u57fa\u7840\u4f9d\u8d56\u5305\u4f7f\u7528\r\n\r\nNagaAgent_core\u8bbe\u8ba1\u4e3a\u4e00\u4e2a\u57fa\u7840\u6846\u67b6\u5305\uff0c\u4e0d\u5305\u542b\u5177\u4f53\u7684Agent\u5b9e\u73b0\u3002\u4f60\u53ef\u4ee5\uff1a\r\n\r\n1. **\u5b89\u88c5\u57fa\u7840\u5305**\uff1a\r\n   ```bash\r\n   pip install NagaAgent-core\r\n   ```\r\n\r\n2. **\u521b\u5efa\u81ea\u5b9a\u4e49Agent**\uff1a\r\n   ```python\r\n   from NagaAgent_core.agents import BaseAgent\r\n   \r\n   class MyAgent(BaseAgent):\r\n       async def handle_handoff(self, data: dict) -> str:\r\n           # \u5b9e\u73b0\u4f60\u7684\u4e1a\u52a1\u903b\u8f91\r\n           return \"\u5904\u7406\u5b8c\u6210\"\r\n   ```\r\n\r\n3. **\u96c6\u6210\u5230\u73b0\u6709\u9879\u76ee**\uff1a\r\n   ```python\r\n   from NagaAgent_core import MCPManager, MessageManager\r\n   \r\n   # \u4f7f\u7528\u6838\u5fc3\u7ec4\u4ef6\r\n   mcp_manager = MCPManager()\r\n   message_manager = MessageManager()\r\n   ```\r\n\r\n### \u6269\u5c55\u5f00\u53d1\r\n\r\n- \u7ee7\u627f`BaseAgent`\u7c7b\u521b\u5efa\u81ea\u5b9a\u4e49Agent\r\n- \u4f7f\u7528`AgentRegistry`\u7ba1\u7406Agent\u751f\u547d\u5468\u671f\r\n- \u901a\u8fc7`MCPManager`\u96c6\u6210\u5916\u90e8\u670d\u52a1\r\n- \u5229\u7528`LogManager`\u548c`ContextManager`\u7ba1\u7406\u5bf9\u8bdd\u5386\u53f2\r\n\r\n## \u8bb8\u53ef\u8bc1\r\n\r\n\u672c\u9879\u76ee\u91c7\u7528MIT\u8bb8\u53ef\u8bc1\u3002\u8be6\u89c1LICENSE\u6587\u4ef6\u3002\r\n\r\n## \u8d21\u732e\r\n\r\n\u6b22\u8fce\u63d0\u4ea4Issue\u548cPull Request\u6765\u6539\u8fdb\u8fd9\u4e2a\u9879\u76ee\u3002\r\n\r\n## \u66f4\u65b0\u65e5\u5fd7\r\n\r\n### v1.0.0\r\n- \u521d\u59cb\u7248\u672c\u53d1\u5e03\r\n- \u5305\u542b\u6d41\u5f0f\u5de5\u5177\u8c03\u7528\u3001MCP\u7ba1\u7406\u5668\u3001\u6d88\u606f\u7ba1\u7406\u5668\u7b49\u6838\u5fc3\u529f\u80fd\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u5a1c\u8fe6AI\u52a9\u624b\u6838\u5fc3\u529f\u80fd\u5305 - \u57fa\u7840\u6846\u67b6\uff0c\u5305\u542bAPI\u670d\u52a1\u5668\u3001Agent\u6846\u67b6\u3001\u65e5\u5fd7\u7ba1\u7406\u7b49\u6838\u5fc3\u7ec4\u4ef6",
    "version": "1.0.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/Xxiii8322766509/NagaAgent/issues",
        "Documentation": "https://github.com/Xxiii8322766509/NagaAgent",
        "Homepage": "https://github.com/Xxiii8322766509/NagaAgent",
        "Repository": "https://github.com/Xxiii8322766509/NagaAgent.git"
    },
    "split_keywords": [
        "ai",
        " assistant",
        " mcp",
        " streaming",
        " tool-calling",
        " chat",
        " api",
        " framework",
        " core"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "23dbc7569c1510fb6cd9f2c45607c5dea34659278ae4462dfb4e05bd7fcdd999",
                "md5": "171a78a7fb280b43d3a8f49f24b690b5",
                "sha256": "e4b40a4232c718b31bce9644465ceb40386af9740d50410f602fde3245e3e112"
            },
            "downloads": -1,
            "filename": "nagaagent_core-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "171a78a7fb280b43d3a8f49f24b690b5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 45694,
            "upload_time": "2025-09-14T15:44:46",
            "upload_time_iso_8601": "2025-09-14T15:44:46.607104Z",
            "url": "https://files.pythonhosted.org/packages/23/db/c7569c1510fb6cd9f2c45607c5dea34659278ae4462dfb4e05bd7fcdd999/nagaagent_core-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "37a6cbe25d28dfeaefed2be8a6e2ae68f6061122f77c635c39f47178f6f2f818",
                "md5": "edfc8f84b667bf84fe2d3146d0965736",
                "sha256": "3cc5186f127fef383f62603c9ca02b4ec45a4d1386dcef8bdffb4de6df46da8d"
            },
            "downloads": -1,
            "filename": "nagaagent_core-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "edfc8f84b667bf84fe2d3146d0965736",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 45722,
            "upload_time": "2025-09-14T15:44:48",
            "upload_time_iso_8601": "2025-09-14T15:44:48.035989Z",
            "url": "https://files.pythonhosted.org/packages/37/a6/cbe25d28dfeaefed2be8a6e2ae68f6061122f77c635c39f47178f6f2f818/nagaagent_core-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-14 15:44:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Xxiii8322766509",
    "github_project": "NagaAgent",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "nagaagent-core",
            "specs": [
                [
                    ">=",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "mcp",
            "specs": [
                [
                    ">=",
                    "1.6.0"
                ]
            ]
        },
        {
            "name": "openai",
            "specs": [
                [
                    ">=",
                    "1.76.0"
                ]
            ]
        },
        {
            "name": "openai-agents",
            "specs": [
                [
                    ">=",
                    "0.0.13"
                ]
            ]
        },
        {
            "name": "python-dotenv",
            "specs": [
                [
                    ">=",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.32.3"
                ]
            ]
        },
        {
            "name": "aiohttp",
            "specs": [
                [
                    ">=",
                    "3.11.18"
                ]
            ]
        },
        {
            "name": "pytz",
            "specs": [
                [
                    ">=",
                    "2024.1"
                ]
            ]
        },
        {
            "name": "colorama",
            "specs": [
                [
                    ">=",
                    "0.4.6"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    ">=",
                    "2.9.0.post0"
                ]
            ]
        },
        {
            "name": "py2neo",
            "specs": [
                [
                    ">=",
                    "2021.2.3"
                ]
            ]
        },
        {
            "name": "pyvis",
            "specs": [
                [
                    ">=",
                    "0.3.2"
                ]
            ]
        },
        {
            "name": "matplotlib",
            "specs": [
                [
                    ">=",
                    "3.10.0"
                ]
            ]
        },
        {
            "name": "flask-cors",
            "specs": [
                [
                    ">=",
                    "6.0.1"
                ]
            ]
        },
        {
            "name": "flask",
            "specs": [
                [
                    ">=",
                    "3.1.0"
                ]
            ]
        },
        {
            "name": "gevent",
            "specs": [
                [
                    ">=",
                    "25.5.1"
                ]
            ]
        },
        {
            "name": "fastapi",
            "specs": [
                [
                    ">=",
                    "0.115.0"
                ]
            ]
        },
        {
            "name": "uvicorn",
            "specs": [
                [
                    ">=",
                    "0.34.0"
                ]
            ]
        },
        {
            "name": "librosa",
            "specs": []
        },
        {
            "name": "websockets",
            "specs": [
                [
                    ">=",
                    "14.0"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    ">=",
                    "1.24.0"
                ],
                [
                    "<",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    "<",
                    "3.0.0"
                ],
                [
                    ">=",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": [
                [
                    ">=",
                    "1.15.2"
                ]
            ]
        },
        {
            "name": "transformers",
            "specs": [
                [
                    ">=",
                    "4.51.3"
                ]
            ]
        },
        {
            "name": "pydantic",
            "specs": [
                [
                    ">=",
                    "2.11.3"
                ]
            ]
        },
        {
            "name": "pydantic-settings",
            "specs": [
                [
                    ">=",
                    "2.9.1"
                ]
            ]
        },
        {
            "name": "httpx",
            "specs": [
                [
                    ">=",
                    "0.28.1"
                ]
            ]
        },
        {
            "name": "typing-extensions",
            "specs": [
                [
                    ">=",
                    "4.13.2"
                ]
            ]
        },
        {
            "name": "pyqt5",
            "specs": [
                [
                    "==",
                    "5.15.11"
                ]
            ]
        },
        {
            "name": "playwright",
            "specs": [
                [
                    ">=",
                    "1.52.0"
                ]
            ]
        },
        {
            "name": "greenlet",
            "specs": [
                [
                    ">=",
                    "3.2.1"
                ]
            ]
        },
        {
            "name": "pyee",
            "specs": [
                [
                    ">=",
                    "13.0.0"
                ]
            ]
        },
        {
            "name": "pygame",
            "specs": [
                [
                    ">=",
                    "2.6.0"
                ]
            ]
        },
        {
            "name": "html2text",
            "specs": [
                [
                    ">=",
                    "2020.1.16"
                ]
            ]
        },
        {
            "name": "sounddevice",
            "specs": [
                [
                    ">=",
                    "0.4.6"
                ]
            ]
        },
        {
            "name": "pyaudio",
            "specs": [
                [
                    ">=",
                    "0.2.14"
                ]
            ]
        },
        {
            "name": "edge-tts",
            "specs": [
                [
                    ">=",
                    "7.0.2"
                ]
            ]
        },
        {
            "name": "emoji",
            "specs": [
                [
                    ">=",
                    "2.8.0"
                ]
            ]
        },
        {
            "name": "pystray",
            "specs": [
                [
                    ">=",
                    "0.19.4"
                ]
            ]
        },
        {
            "name": "pillow",
            "specs": [
                [
                    ">=",
                    "10.0.0"
                ]
            ]
        },
        {
            "name": "screen-brightness-control",
            "specs": []
        },
        {
            "name": "pycaw",
            "specs": []
        },
        {
            "name": "comtypes",
            "specs": []
        },
        {
            "name": "jmcomic",
            "specs": [
                [
                    ">=",
                    "2.6.5"
                ]
            ]
        },
        {
            "name": "fastmcp",
            "specs": [
                [
                    ">=",
                    "2.11.2"
                ]
            ]
        },
        {
            "name": "paho-mqtt",
            "specs": [
                [
                    ">=",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "tiktoken",
            "specs": []
        },
        {
            "name": "python-docx",
            "specs": [
                [
                    ">=",
                    "1.2.0"
                ]
            ]
        },
        {
            "name": "live2d-py",
            "specs": [
                [
                    ">=",
                    "0.5.4"
                ]
            ]
        },
        {
            "name": "pyopengl",
            "specs": [
                [
                    ">=",
                    "3.1.10"
                ]
            ]
        },
        {
            "name": "toml",
            "specs": [
                [
                    ">=",
                    "0.10.2"
                ]
            ]
        },
        {
            "name": "opensimplex",
            "specs": [
                [
                    ">=",
                    "0.4.5.1"
                ]
            ]
        },
        {
            "name": "langchain-community",
            "specs": [
                [
                    ">=",
                    "0.3.29"
                ]
            ]
        },
        {
            "name": "crawl4ai",
            "specs": []
        },
        {
            "name": "onnxruntime",
            "specs": []
        }
    ],
    "lcname": "nagaagent-core"
}
        
Elapsed time: 3.96439s