模块化AI助手

SYNAPSE是一个基于图的AI助手,结合了LangGraph编排、工具感知推理和对话记忆功能,为开发者提供智能、上下文感知的聊天机器人解决方案。

  • by Nabin68
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Nabin68/SYNAPSE

使用说明

🧠 突触

具有工具、内存和实时流的模块化AI助手

使用LangGraph、LangChain和Cohere构建

特性 • 建筑 • 安装 • 用法 • 路线图


📖 概述

突触 是一个基于图形的人工智能助手,结合了 LangGraph编排, 工具感知推理,以及 会话记忆 成为时尚的Streamlit界面。专为希望以最小的摩擦创建智能、上下文感知聊天机器人的开发人员而设计。

为什么选择SYNAPSE?

  • 🎯 模块化设计 --易于使用新工具和功能进行扩展
  • 🔄 基于图的推理 --使用LangGraph进行复杂的代理编排
  • 💾 会话记忆 --在多回合对话中保持上下文
  • ⚡ 实时流媒体 --逐个令牌生成响应
  • 🛠️ 工具集成 --网络搜索、股票价格和自定义工具
  • 🎨 干净的UI --具有会话管理功能的专业Streamlit界面

✨ 特性

🤖 AI核心

  • 使用LangGraph进行基于图的代理编排
  • 启用工具的LLM(ChatCohere)
  • 有条件的工具执行和布线
  • 内存会话状态管理

🎨 用户体验

  • 基于Streamlit的聊天界面
  • 多线程会话切换
  • 会话状态管理
  • 令牌级流媒体响应

🛠️ 工具和集成

  • 网络搜索(DuckDuckGo)
  • 股票价格查询
  • 结构化数据检索
  • 可扩展的工具架构

💾 内存和状态

  • LangGraph检查点系统
  • 跨会话内存持久性
  • 基于线程的会话管理
  • 上下文感知响应

🏗️ 建筑

SYNAPSE遵循一个干净的模块化架构,将关注点分开以实现最大的灵活性:

graph TB
    A[Streamlit Frontend] -->|User Input| B[LangGraph StateGraph]
    B -->|Process| C[ChatCohere LLM]
    C -->|Decision| D{Tool Needed?}
    D -->|Yes| E[ToolNode]
    D -->|No| F[Direct Response]
    E -->|Execute| G[Tool Functions]
    G -->|Results| C
    C -->|Stream| A
    B ---|Memory| H[(Checkpoint Store)]
    
    style A fill:#ff6b6b
    style B fill:#4ecdc4
    style C fill:#45b7d1
    style E fill:#96ceb4
    style H fill:#ffeaa7

部件分解

组件 文件 责任
后端 Backend.py LangGraph状态管理、LLM编排、工具路由
前端 Frontend.py 流式UI、对话管理、流式显示
工具 Tools.py 工具定义、网络搜索、股票价格、自定义功能

📂 项目结构

synapse-ai/
│
├── 📄 Backend.py          # Core agent logic & graph orchestration
├── 🎨 Frontend.py         # Streamlit chat interface
├── 🛠️ Tools.py            # Tool definitions & implementations
├── 📋 requirements.txt    # Python dependencies
├── 🔐 .env.example        # Environment variable template
└── 📖 README.md           # Project documentation

⚙️ 设置

先决条件

1.️⃣ 克隆存储库

git clone https://github.com/Nabin68/SYNAPSE.git
cd SYNAPSE

2.️⃣ 再进行

pip install -r requirements.txt

所需软件包:

langchain
langchain-cohere
langgraph
streamlit
python-dotenv
duckduckgo-search
yfinance

3.️⃣ 配置环境

创建 .env 项目根目录中的文件:

COHERE_API_KEY=your_cohere_api_key_here

💡 提示: 复制 .env.example 到 .env 并填写您的API密钥


🚀 用法

运行应用程序

streamlit run Frontend.py

应用程序将在默认浏览器中打开 http://localhost:8501

使用聊天界面

  1. 开始聊天 --在输入框中键入您的消息
  2. 观看实时响应 --看到AI通过流媒体实时响应
  3. 切换对话 --使用侧边栏创建或切换线程
  4. 工具使用 --AI会在需要时自动使用工具(搜索、股票价格等)

交互示例

User: What's the current price of Apple stock?
🧠 SYNAPSE: [Uses stock price tool]
      The current price of AAPL is $195.83...

User: Search for the latest AI news
🧠 SYNAPSE: [Uses web search tool]
      Here are the latest developments in AI...

🛠️ 扩展SYNAPSE

添加新工具

在中创建新工具 Tools.py:

@tool
def my_custom_tool(query: str) -> str:
    """Description of what your tool does"""
    # Your implementation
    return result

在工具列表中注册:

tools = [web_search, stock_price, my_custom_tool]

自定义LLM

修改 Backend.py 使用不同的模型或提供商:

from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4", temperature=0.7)

🔮 路线图

即将推出

  • [ ] 💾 基于SQLite的持久内存 --长期对话存储
  • [ ] 📚 RAG集成 --文档问答与知识检索
  • [ ] 🔌 MCP服务器支持 --模型上下文协议集成
  • [ ] 🧰 扩展工具库 --天气、新闻、计算等
  • [ ] 🎨 主题定制 --深色模式和自定义配色方案
  • [ ] 📊 分析仪表板 --对话见解和使用统计数据
  • [ ] 🌐 多语言支持 --国际化
  • [ ] 🔒 认证 --用户帐户和访问控制

🤝 贡献

欢迎投稿!以下是您可以提供帮助的方式:

  1. 分叉 存储库
  2. 创建 特征分支(git checkout -b feature/AmazingFeature)
  3. 提交 您的更改(git commit -m 'Add some AmazingFeature')
  4. 推 到分行(git push origin feature/AmazingFeature)
  5. 打开 拉取请求

开发指南

  • 遵循PEP 8风格指南
  • 向新函数添加文档字符串
  • 更新README以获取新功能
  • 提交前进行彻底测试

📝 许可证

该项目根据 MIT许可证 -看看 许可证 文件以获取详细信息。


👤 作者

那宾


🙏 致谢

  • LangChain --对于令人难以置信的LLM框架
  • LangGraph --用于基于图的代理编排
  • 凝聚 --用于强大的语言模型
  • 溪流 --对于漂亮的UI框架

📞 支持

如果您遇到任何问题或有疑问:


⭐ 如果你觉得这个repo有用,请将其标记为星号!

由...制作❤️ 通过Nabin