iTTsShuu 1 долоо хоног өмнө
parent
commit
e544fcd0c2

+ 23 - 0
曹航/4/Dockerfile

@@ -0,0 +1,23 @@
+# 基础镜像
+FROM python:3.11-alpine
+
+# 设置工作目录
+WORKDIR /app
+
+# 只复制当前目录(曹航/4)及其子目录到容器
+COPY . /app
+
+# 安装依赖(假设有 requirements.txt 或 pyproject.toml)
+# 优先使用 requirements.txt
+RUN if [ -f requirements.txt ]; then \
+        pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt; \
+    elif [ -f pyproject.toml ]; then \
+        pip install --upgrade pip && pip install --no-cache-dir .; \
+    fi
+
+# 暴露端口
+EXPOSE 8000
+
+# 启动FastAPI服务(根据实际入口文件调整)
+CMD ["uvicorn", "sse_fastapi:app", "--host", "0.0.0.0", "--port", "8000"]
+

+ 2 - 1
曹航/4/SSE.html

@@ -122,6 +122,7 @@
     </div>
     <script>
         // 获取页面元素
+        const agentname = "AI Agent";
         let historyDiv = document.getElementById('history');
         let output = document.getElementById('output');
         let inputBox = document.getElementById('input');
@@ -148,7 +149,7 @@
         }
         // 发送消息主函数
         function send() {
-            const agentname = "AI Agent";
+            // const agentname = "AI Agent";
             const username = usernameBox.value;
             const user_id = useridBox.value;
             const user_message = inputBox.value.trim();

+ 1 - 1
曹航/4/agents/simple_agent.py

@@ -8,7 +8,7 @@ from textwrap import dedent
 from dotenv import load_dotenv
 load_dotenv()
 
-agent_storage = "./曹航/4/agents/tmp/agents.db"
+agent_storage = "./tmp/agents.db"
 
 simple_info_agent_prompt = dedent('''
 你是一个专业的信息收集助手。你的任务是收集用户的姓名、年龄和用户感兴趣的行业。

BIN
曹航/4/agents/tmp/agents.db


+ 11 - 0
曹航/4/docker-compose.yml

@@ -0,0 +1,11 @@
+version: '3.8'
+services:
+  sse-fastapi:
+    build: .
+    container_name: sse-fastapi
+    ports:
+      - "8000:8000"
+    volumes:
+      - ./:/app
+      - ../../.env:/app/.env
+    restart: unless-stopped 

+ 10 - 0
曹航/4/requirements.txt

@@ -0,0 +1,10 @@
+fastapi>=0.95
+uvicorn[standard]>=0.22
+openai>=1.93.0
+python-dotenv>=1.0
+pydantic>=1.10
+agno>=1.7.2
+requests>=2.31.0
+sqlalchemy
+
+# agno为AI Agent框架,需根据实际安装名填写

+ 21 - 0
曹航/4/routes/chat_page_route.py

@@ -0,0 +1,21 @@
+from fastapi import APIRouter
+from fastapi.responses import HTMLResponse
+import sys
+import os
+
+sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+
+page_route = APIRouter(prefix="/pages", tags=["pages"])
+
+@page_route.get("/chats")
+async def chat_stream():
+    """
+    直接返回SSE.html页面内容
+    """
+    html_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../SSE.html")
+    try:
+        with open(html_path, "r", encoding="utf-8") as f:
+            html_content = f.read()
+        return HTMLResponse(content=html_content)
+    except Exception as e:
+        return HTMLResponse(content=f"无法加载SSE.html页面: {e}", status_code=500)

+ 1 - 0
曹航/4/routes/sse_agents_route.py

@@ -3,6 +3,7 @@ from fastapi.responses import StreamingResponse
 import sys
 import os
 
+
 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 from agents.simple_agent import simple_info_agent  # 导入基于agno框架的信息收集Agent
 

+ 9 - 2
曹航/4/sse_fastapi.py

@@ -2,11 +2,18 @@ from fastapi import FastAPI
 from fastapi.middleware.cors import CORSMiddleware
 
 from routes.sse_agents_route import agents_route
-
+from routes.chat_page_route import page_route
 # 创建FastAPI应用
 app = FastAPI()
 
+from fastapi.responses import RedirectResponse
 app.include_router(agents_route)
+app.include_router(page_route)
+
+# 根路径重定向到/pages/chats页面
+@app.get("/")
+async def root():
+    return RedirectResponse(url="/pages/chats")
 
 # 允许跨域,方便本地和前端调试
 app.add_middleware(
@@ -20,4 +27,4 @@ app.add_middleware(
 if __name__ == "__main__":
     # 本地调试时直接运行FastAPI服务
     import uvicorn
-    uvicorn.run(app, host="0.0.0.0", port=8000)
+    uvicorn.run(app, host="0.0.0.0", port=8000,reload=True)

BIN
曹航/4/tmp/agents.db