jamesw853 commited on
Commit
f9601dd
·
verified ·
1 Parent(s): 6630adc

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +33 -0
  2. requirements.txt +2 -0
app.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import subprocess
2
+ import os
3
+ from fastapi import FastAPI, HTTPException
4
+ from pydantic import BaseModel
5
+
6
+ app = FastAPI(title="OpenCode API")
7
+
8
+ class PromptRequest(BaseModel):
9
+ prompt: str
10
+
11
+ @app.post("/ask")
12
+ async def ask_openai(request: PromptRequest):
13
+ """接收用户提示,调用 opencode CLI 并返回结果"""
14
+ try:
15
+ # 调用 opencode -p "prompt" 并捕获输出
16
+ result = subprocess.run(
17
+ ["opencode", "-p", request.prompt],
18
+ capture_output=True,
19
+ text=True,
20
+ timeout=60, # 防止长时间阻塞
21
+ env={**os.environ, "OPENCODE_DATA_DIR": "/data"} # 确保数据持久化
22
+ )
23
+ if result.returncode != 0:
24
+ raise HTTPException(status_code=500, detail=result.stderr)
25
+ return {"response": result.stdout}
26
+ except subprocess.TimeoutExpired:
27
+ raise HTTPException(status_code=504, detail="Request timeout")
28
+ except Exception as e:
29
+ raise HTTPException(status_code=500, detail=str(e))
30
+
31
+ @app.get("/")
32
+ def root():
33
+ return {"message": "OpenCode API is running. Use POST /ask with JSON {\"prompt\": \"your question\"}"}
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ fastapi
2
+ uvicorn[standard]