AI Agent Service Toolkit:一站式大模型智能体开发套件

news/2025/2/27 1:01:04

项目简介

该工具包基于LangGraph、FastAPI和Streamlit构建,提供了构建和运行大模型Agent的最小原子能力,包含LangGraph代理、FastAPI服务、用于与服务交互的客户端以及一个使用客户端提供聊天界面的Streamlit应用。用户可以利用该工具包提供的模板快速搭建基于LangGraph框架的智能体应用,简化部署和调试过程,快速验证效果。
在这里插入图片描述

功能特点

○ LangGraph代理:基于LangGraph框架的智能体工作流,可自由设置节点和中断处理。
○ FastAPI服务:提供API服务,包含流式和非流式。
○ 内容审核:实现LlamaGuard进行内容审核。
○ UI界面:基于Streamlit的聊天界面,简化交互流程。
○ 多代理支持:在服务中运行多个代理,并通过URL路径调用,支持在UI界面随时切换。
○ 异步设计:利用async/await高效处理并发请求。
○ Docker支持:包含Dockerfile和docker compose文件,方便开发和部署。

文件结构解析

○ src/agents/:定义具有不同功能的几个代理。
○ src/core/:包括LLM定义和其他设置。
○ src/service/service.py:基于FastAPI的流式和非流式服务。
○ src/client/client.py:封装的客户端,用于与代理服务API进行交互。
○ src/streamlit_app.py:基于Streamlit的聊天界面。

快速启动

1. 配置文件

在项目根目录下创建一个.env文件,并填入模型服务商的API KEY。

# 最少需要填入一个模型服务商的API—KEY
# API keys for different providers
OPENAI_API_KEY=
DEEPSEEK_API_KEY=
ANTHROPIC_API_KEY=
GOOGLE_API_KEY=
GROQ_API_KEY=
USE_AWS_BEDROCK=false

# Use a fake model for testing
USE_FAKE_MODEL=false

# Set a default model
DEFAULT_MODEL=

# Web server configuration
HOST=0.0.0.0
PORT=8080

# Authentication secret, HTTP bearer token header is required if set
AUTH_SECRET=

# Langsmith configuration
LANGCHAIN_TRACING_V2=false
LANGCHAIN_PROJECT=default
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_API_KEY=

# Application mode. If the value is "dev", it will enable uvicorn reload
MODE=

# OpenWeatherMap API key
OPENWEATHERMAP_API_KEY=

# Add for running ollama
# OLLAMA_MODEL=llama3.2
# Note: set OLLAMA_BASE_URL if running service in docker and ollama on bare metal
# OLLAMA_BASE_URL=http://host.docker.internal:11434

# Agent URL: used in Streamlit app - if not set, defaults to http://{HOST}:{PORT}
# AGENT_URL=http://0.0.0.0:8080

2. 创建并启动虚拟环境

pip install uv
uv sync --frozen
source .venv/bin/activate

3. 启动agent服务

python src/run_service.py

4. 启动UI界面

source .venv/bin/activate
streamlit run src/streamlit_app.py

自定义agent

按照该项目的介绍,自定义agent需要如下两步:

  1. 在src/agents下新增自定义的agent模块。
  2. 将新增的agent导入src/agents/agents.py。

该项目默认提供了4种agent,其中的chatbot只能做简单的对话,因此笔者打算将其改造为智能问答阅读助手,可以用于解读上传的文件。

只需修改src/streamlit_app.py

# ... existing code ...

# Config options
with st.sidebar:
    st.header(f"{
     APP_ICON} <

http://www.niftyadmin.cn/n/5869332.html

相关文章

WebSocket简单介绍 并接入deepseek

目录 什么是 WebSocket&#xff1f;工作原理&#xff1a; 为什么需要 WebSocket&#xff1f;WebSocket 的优势HTTP 和 WebSocket 的区别WebSocket 的劣势WebSocket 的应用场景WebSocket 握手过程1. 客户端发起握手请求2. 服务器响应握手请求3. 建立连接 WebSocket 事件处理WebS…

机器视觉--相机曝光

在现代工业生产的精密舞台上&#xff0c;机器视觉技术已然成为推动生产自动化、智能化的关键力量。而工业相机作为机器视觉系统的 “眼睛”&#xff0c;其曝光环节更是决定了视觉信息获取的质量与精度&#xff0c;如同为工业生产赋予了一双洞察入微的 “智慧之眼”&#xff0c;…

C# httpclient 和 Flurl.Http 的测试

关于C#调用接口或Post,Flurl封装了httpclient, CSDN有哥们提供了一个公网的测试网站&#xff0c;可以测试Post调用&#xff0c;我写了2个函数&#xff0c;测试httpclient和Flurl使用Post: async 和 await 是成对使用的&#xff0c;为了接受web异步返回的数据&#xff0c;winfor…

The difference of sort() and sorted() in Python

This is my first time writing a blog in English, so please forgive me for not writing well The sort() method and sorted() function in Python both sort elements, but they differ in usage and behavior: ​1. Type and Usage: ​sort(): A ​list method​ (only …

Jtti.cc:站群服务器SEO优化建议,如何分配多IP?

站群优化的核心目标之一是尽可能通过多个网站互相引导流量&#xff0c;从而提升主站的权重。这时候&#xff0c;多IP的分配至关重要&#xff0c;因为搜索引擎会检测到同一IP下的网站之间的关联性。如果一个IP地址下有过多的相似站点&#xff0c;搜索引擎可能会认为这些站点存在…

‌XPath vs CSS Selector 深度对比

&#x1f4ca; ‌核心差异总览‌ ‌对比维度‌‌XPath‌‌CSS Selector‌‌语法复杂度‌较高&#xff08;需路径表达式&#xff09;简洁&#xff08;类似前端开发习惯&#xff09;‌性能‌较慢&#xff08;全局遍历&#xff09;更快&#xff08;浏览器原生优化&#xff09;‌文…

后端返回文件流,前端导出excel文件

1、当后端接口返回文件流时&#xff0c;需前端导出excel文件&#xff0c;在请求中添加 responseType: blob限制条件&#xff0c;根据返回的文件流导出 封装的方法&#xff1a; /** * 公共的导出excel方法 * param {*} content 后端接口返回的二进制文件 * param {*} name 导出…

【Uniapp-Vue3】在uniapp中使用pinia的基本用法

引入pinia&#xff1a; 在main.js中对pinia进行引入&#xff0c;使用和导出 import * as Pinia from pinia; // 引入pinia app.use(Pinia.createPinia()); // 使用pinia 在项目根目录下创建一个stores文件夹&#xff0c;里面创建一个counter.js文件 我们在counter.js中定义…