Ken Sang Tang commited on
Commit
d5461ce
·
verified ·
1 Parent(s): 8a36f2d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -26
app.py CHANGED
@@ -1,8 +1,7 @@
1
- from fastapi import FastAPI
2
- from fastapi.responses import HTMLResponse
3
  from fastapi.requests import Request
4
  from fastapi.templating import Jinja2Templates
5
- from fastapi import Body, FastAPI
6
  from fastapi.middleware.cors import CORSMiddleware
7
  from fastapi.staticfiles import StaticFiles
8
  from pydantic import BaseModel
@@ -17,10 +16,16 @@ from datetime import datetime
17
  from json import dumps
18
 
19
 
20
- templates = Jinja2Templates(directory="templates")
 
 
 
 
 
 
21
 
22
- import toml
23
- import os
24
 
25
  app = FastAPI()
26
 
@@ -88,29 +93,27 @@ async def create_task(prompt: str = Body(..., embed=True)):
88
  asyncio.create_task(run_task(task.id, prompt))
89
  return {"task_id": task.id}
90
 
 
 
 
91
 
92
- @app.get("/", response_class=HTMLResponse)
93
- async def chat(request: Request):
94
- return templates.TemplateResponse("index.html", {"request": request})
 
 
 
 
 
 
 
 
 
 
 
 
95
 
96
- @app.get("/chat", response_class=HTMLResponse)
97
- async def chat(request: Request):
98
- return templates.TemplateResponse("chat.html", {"request": request})
99
 
100
- @app.post("/tasks")
101
- async def create_task(prompt: str = Body(..., embed=True)):
102
- task = task_manager.create_task(prompt)
103
- asyncio.create_task(run_task(task.id, prompt))
104
- return {"task_id": task.id}
105
 
106
 
107
- # Load OPENMANUS_ENDPOINT_URL from env or config fallback
108
- OPENMANUS_ENDPOINT_URL = os.getenv("OPENMANUS_ENDPOINT_URL")
109
- if not OPENMANUS_ENDPOINT_URL:
110
- config_path = "config/config.toml"
111
- if os.path.exists(config_path):
112
- config = toml.load(config_path)
113
- OPENMANUS_ENDPOINT_URL = config.get("OPENMANUS_ENDPOINT_URL")
114
 
115
- if not OPENMANUS_ENDPOINT_URL:
116
- raise EnvironmentError("OPENMANUS_ENDPOINT_URL must be set in env or config/config.toml")
 
1
+ from fastapi import FastAPI, Body, Request, HTTPException
2
+ from fastapi.responses import HTMLResponse, JSONResponse, StreamingResponse
3
  from fastapi.requests import Request
4
  from fastapi.templating import Jinja2Templates
 
5
  from fastapi.middleware.cors import CORSMiddleware
6
  from fastapi.staticfiles import StaticFiles
7
  from pydantic import BaseModel
 
16
  from json import dumps
17
 
18
 
19
+ # Load OPENMANUS_ENDPOINT_URL from env or config fallback
20
+ OPENMANUS_ENDPOINT_URL = os.getenv("OPENMANUS_ENDPOINT_URL")
21
+ if not OPENMANUS_ENDPOINT_URL:
22
+ config_path = "config/config.toml"
23
+ if os.path.exists(config_path):
24
+ config = toml.load(config_path)
25
+ OPENMANUS_ENDPOINT_URL = config.get("OPENMANUS_ENDPOINT_URL")
26
 
27
+ if not OPENMANUS_ENDPOINT_URL:
28
+ raise EnvironmentError("OPENMANUS_ENDPOINT_URL must be set in env or config/config.toml")
29
 
30
  app = FastAPI()
31
 
 
93
  asyncio.create_task(run_task(task.id, prompt))
94
  return {"task_id": task.id}
95
 
96
+ async def run_task(task_id: str, prompt: str):
97
+ try:
98
+ task_manager.tasks[task_id].status = "running"
99
 
100
+ async def call_manus(url: str, prompt: str):
101
+ generate_kwargs = {"prompt": prompt}
102
+ async with aiohttp.ClientSession() as session:
103
+ async with session.post(
104
+ url=url,
105
+ json=generate_kwargs,
106
+ timeout=aiohttp.ClientTimeout(total=3600)
107
+ ) as response:
108
+ text = await response.text()
109
+ await task_manager.update_task_step(task_id, 0, text, "result")
110
+
111
+ await call_manus(OPENMANUS_ENDPOINT_URL, prompt)
112
+ await task_manager.complete_task(task_id)
113
+ except Exception as e:
114
+ await task_manager.fail_task(task_id, str(e))
115
 
 
 
 
116
 
 
 
 
 
 
117
 
118
 
 
 
 
 
 
 
 
119