```
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Failing after 1m17s

docs(quickstart): 更新快速开始文档以支持Nginx反向代理配置

- 修改环境变量配置方式,从直接创建.env文件改为复制模板文件
- 添加必需和可选配置项的详细说明
- 更新Docker Compose启动命令以使用正确的路径
- 增加Nginx反向代理访问方式的说明
- 为本地开发模式添加额外的数据库配置说明

fix(readme): 修正部署说明中的环境变量配置方法

- 将硬编码的环境变量配置改为使用模板文件复制方式
- 更新Docker Compose启动命令路径
- 补充Nginx反向代理访问说明
- 修正数据库配置注意事项

feat(backend): 支持从环境变量读取数据库连接配置

- 添加os模块导入
- 修改DB_URI配置逻辑,优先从环境变量读取
- 适配Docker和本地开发环境的不同数据库连接地址

refactor(docker): 优化Docker Compose配置支持Nginx代理

- 限制后端端口仅本机访问
- 修改前端API URL为相对路径,通过Nginx代理访问
- 限制前端端口仅本机访问

refactor(frontend): 适配Nginx反向代理后端API调用

- 将硬编码的后端API地址改为相对路径
- 支持通过Nginx代理转发请求到后端服务

chore(scripts): 更新启动脚本中的访问地址提示信息

- 修改前端启动成功后的访问地址提示
- 添加Nginx代理访问方式的说明
```
This commit is contained in:
2026-04-14 01:44:55 +08:00
parent 93ec2b5b8e
commit ebbd73ddf0
7 changed files with 93 additions and 24 deletions

29
.env.example Normal file
View File

@@ -0,0 +1,29 @@
# =============================================================================
# 环境变量配置模板
# 复制此文件为 .env 并填入真实值cp .env.example .env
# =============================================================================
# -----------------------------------------------------------------------------
# AI 模型 API 密钥(必需)
# -----------------------------------------------------------------------------
# 智谱 AI API 密钥(用于在线模型调用 GLM-4.7-Flash
# 获取地址: https://open.bigmodel.cn/
ZHIPUAI_API_KEY=your_zhipuai_api_key_here
# 本地 vLLM 服务认证 Token用于本地 Gemma 模型调用)
# 如果使用本地 vLLM 容器,需要设置此值与 vLLM 容器的 --api-key 参数一致
VLLM_LOCAL_KEY=token-abc123
# -----------------------------------------------------------------------------
# 数据库配置(可选 - 代码中有默认值)
# -----------------------------------------------------------------------------
# PostgreSQL 数据库连接字符串
# Docker Compose 部署时使用服务名 'postgres'
# DB_URI=postgresql://postgres:mysecretpassword@postgres:5432/langgraph_db?sslmode=disable
# 本地开发时使用 localhost
# DB_URI=postgresql://postgres:mysecretpassword@localhost:5432/langgraph_db?sslmode=disable
# 如果不设置代码将使用默认值Docker 环境指向 postgres 服务)

View File

@@ -13,20 +13,32 @@
#### 1. 配置环境变量 #### 1. 配置环境变量
```bash ```bash
cat > .env << EOF # 复制模板文件
ZHIPUAI_API_KEY=your_zhipuai_api_key_here cp .env.example .env
VLLM_LOCAL_KEY=token-abc123
EOF # 编辑 .env 文件,填入真实的 API Key
vim .env # 或使用你喜欢的编辑器
``` ```
**必需配置项**
- `ZHIPUAI_API_KEY` - 智谱 AI API 密钥(从 [智谱开放平台](https://open.bigmodel.cn/) 获取)
- `VLLM_LOCAL_KEY` - 本地 vLLM 服务认证 Token与 vLLM 容器的 `--api-key` 参数一致)
**可选配置项**
- `DB_URI` - PostgreSQL 连接字符串(默认已配置,通常无需修改)
#### 2. 启动服务 #### 2. 启动服务
```bash ```bash
docker compose up -d --build docker compose -f docker/docker-compose.yml up -d --build
``` ```
#### 3. 访问应用 #### 3. 访问应用
**如果配置了 Nginx 反向代理**
- 访问地址:`http://your-domain.com``http://your-server-ip`
**如果未配置 Nginx直接访问容器**
- **前端**: http://localhost:8501 - **前端**: http://localhost:8501
- **后端 API**: http://localhost:8001 - **后端 API**: http://localhost:8001
@@ -77,10 +89,21 @@ pip install -r requirement.txt
#### 3. 配置环境变量 #### 3. 配置环境变量
编辑 `.env` 文件: 复制并编辑 `.env` 文件:
```bash
cp .env.example .env
vim .env
```
**本地开发需要额外配置数据库连接**
```env ```env
ZHIPUAI_API_KEY=your_api_key_here ZHIPUAI_API_KEY=your_api_key_here
VLLM_LOCAL_KEY=token-abc123
# 本地开发时,数据库主机改为 localhost
DB_URI=postgresql://postgres:mysecretpassword@localhost:5432/langgraph_db?sslmode=disable
``` ```
#### 4. 启动服务 #### 4. 启动服务
@@ -95,7 +118,7 @@ python backend.py
streamlit run frontend.py streamlit run frontend.py
``` ```
浏览器自动打开 http://localhost:8501 浏览器自动打开前端页面(如果配置了 Nginx访问 `http://your-domain.com`;否则访问 http://localhost:8501
--- ---

View File

@@ -104,21 +104,24 @@ Agent1/
### 方式一Docker Compose推荐 ### 方式一Docker Compose推荐
```bash ```
# 1. 配置 .env 文件 # 1. 配置环境变量
echo "ZHIPUAI_API_KEY=your_key_here" > .env cp .env.example .env
# 编辑 .env 文件,填入真实的 API Key
# 2. 启动所有服务 # 2. 启动所有服务
docker compose up -d --build docker compose -f docker/docker-compose.yml up -d --build
# 3. 访问应用 # 3. 访问应用
# 前端: http://localhost:8501 # 如果配置了 Nginx 反向代理http://your-domain.com 或 http://your-server-ip
# 后端: http://localhost:8001 # 如果未配置 Nginx直接访问
# - 前端: http://localhost:8501
# - 后端 API: http://localhost:8001
``` ```
### 方式二:本地开发模式 ### 方式二:本地开发模式
```bash ```
# 1. 启动 PostgreSQL # 1. 启动 PostgreSQL
docker run -d --name postgres-langgraph \ docker run -d --name postgres-langgraph \
-e POSTGRES_PASSWORD=mysecretpassword \ -e POSTGRES_PASSWORD=mysecretpassword \
@@ -178,7 +181,7 @@ streamlit run frontend.py
`tools.py` 中添加新的 `@tool` 装饰函数: `tools.py` 中添加新的 `@tool` 装饰函数:
```python ```
@tool @tool
def my_new_tool(param: str) -> str: def my_new_tool(param: str) -> str:
""" """
@@ -200,7 +203,7 @@ def my_new_tool(param: str) -> str:
`agent.py``initialize()` 方法中添加模型配置: `agent.py``initialize()` 方法中添加模型配置:
```python ```
model_configs = { model_configs = {
"zhipu": self._create_zhipu_llm, "zhipu": self._create_zhipu_llm,
"local": self._create_local_llm, "local": self._create_local_llm,
@@ -227,7 +230,7 @@ model_configs = {
`.env` 文件中配置: `.env` 文件中配置:
```env ```
# 智谱 AI API Key必需 # 智谱 AI API Key必需
ZHIPUAI_API_KEY=your_api_key_here ZHIPUAI_API_KEY=your_api_key_here
@@ -242,6 +245,10 @@ VLLM_LOCAL_KEY=token-abc123
postgresql://postgres:mysecretpassword@localhost:5432/langgraph_db postgresql://postgres:mysecretpassword@localhost:5432/langgraph_db
``` ```
**注意**
- **本地开发模式**:使用 `localhost``127.0.0.1`
- **Docker Compose 部署**:后端容器内应使用服务名 `postgres`(通过环境变量 `DB_URI` 自动配置)
如使用 Docker Compose数据库会在内部网络中自动配置。 如使用 Docker Compose数据库会在内部网络中自动配置。
--- ---

View File

@@ -3,6 +3,7 @@ FastAPI 后端 - 支持动态模型切换,使用 PostgreSQL 持久化记忆
采用依赖注入模式,优雅管理资源生命周期 采用依赖注入模式,优雅管理资源生命周期
""" """
import os
import uuid import uuid
from contextlib import asynccontextmanager from contextlib import asynccontextmanager
@@ -13,8 +14,11 @@ from langgraph.checkpoint.postgres.aio import AsyncPostgresSaver
from app.agent import AIAgentService from app.agent import AIAgentService
# PostgreSQL 连接字符串 # PostgreSQL 连接字符串(优先从环境变量读取,适配 Docker 和本地开发)
DB_URI = "postgresql://postgres:mysecretpassword@localhost:5432/langgraph_db?sslmode=disable" DB_URI = os.getenv(
"DB_URI",
"postgresql://postgres:mysecretpassword@postgres:5432/langgraph_db?sslmode=disable"
)
@asynccontextmanager @asynccontextmanager

View File

@@ -37,6 +37,8 @@ services:
postgres: postgres:
condition: service_healthy condition: service_healthy
restart: unless-stopped restart: unless-stopped
ports:
- "127.0.0.1:8001:8001" # 仅本机访问,供 Nginx 反向代理使用
frontend: frontend:
build: build:
@@ -44,9 +46,9 @@ services:
dockerfile: docker/Dockerfile.frontend dockerfile: docker/Dockerfile.frontend
container_name: ai-frontend container_name: ai-frontend
environment: environment:
- API_URL=http://backend:8001/chat - API_URL=/api/chat # 通过 Nginx 反向代理访问后端
ports: ports:
- "8501:8501" - "127.0.0.1:8501:8501" # 仅本机访问,供 Nginx 反向代理使用
networks: networks:
- ai-network - ai-network
depends_on: depends_on:

View File

@@ -9,8 +9,12 @@ import uuid
import requests import requests
import streamlit as st import streamlit as st
# 后端 API 地址(端口 8001
API_URL = "http://localhost:8001/chat" # 原来的硬编码,本地测试
# API_URL = "http://115.190.121.151:8001/chat"
# 改为相对路径(由 Nginx 代理转发)
API_URL = "/api/chat"
st.set_page_config(page_title="AI 个人助手", page_icon="🤖") st.set_page_config(page_title="AI 个人助手", page_icon="🤖")
st.title("🤖 个人生活与数据分析助手") st.title("🤖 个人生活与数据分析助手")

View File

@@ -100,7 +100,7 @@ start_frontend() {
streamlit run frontend/frontend.py & streamlit run frontend/frontend.py &
FRONTEND_PID=$! FRONTEND_PID=$!
echo -e "${GREEN}✓ 前端服务已启动 (PID: $FRONTEND_PID)${NC}" echo -e "${GREEN}✓ 前端服务已启动 (PID: $FRONTEND_PID)${NC}"
echo -e "${GREEN}✓ 请在浏览器中打开: http://localhost:8501${NC}" echo -e "${GREEN}✓ 请在浏览器中打开: http://localhost:8501(本地开发)或 http://your-domain.comNginx 代理)${NC}"
} }
# 清理函数 # 清理函数