84 lines
1.8 KiB
Python
84 lines
1.8 KiB
Python
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from pydantic import BaseModel
|
|
from .core.llm import client
|
|
|
|
app = FastAPI()
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
class ChatRequest(BaseModel):
|
|
message: str
|
|
session_id: str | None = None
|
|
|
|
|
|
def run_agent(message: str, session_id: str | None = None):
|
|
response = client.chat.completions.create(
|
|
model="deepseek-chat",
|
|
messages=[
|
|
{"role": "system", "content": "You are a helpful agent."},
|
|
{"role": "user", "content": message}
|
|
]
|
|
)
|
|
return response.choices[0].message.content
|
|
|
|
|
|
@app.get("/")
|
|
def root():
|
|
return {"status": "ok"}
|
|
|
|
|
|
@app.post("/chat")
|
|
def chat(req: ChatRequest):
|
|
response = run_agent(req.message, req.session_id)
|
|
|
|
return {
|
|
"response": response,
|
|
"session_id": req.session_id
|
|
}
|
|
|
|
|
|
@app.get("/v1/models")
|
|
def list_models():
|
|
return {
|
|
"object": "list",
|
|
"data": [
|
|
{
|
|
"id": "agent-model",
|
|
"object": "model",
|
|
"created": 0,
|
|
"owned_by": "local-agent"
|
|
}
|
|
]
|
|
}
|
|
|
|
@app.get("/models")
|
|
def legacy_models():
|
|
return list_models()
|
|
|
|
@app.post("/chat/completions")
|
|
def chat_completions(req: dict):
|
|
messages = req["messages"]
|
|
user_message = messages[-1]["content"]
|
|
|
|
response = run_agent(user_message)
|
|
|
|
return {
|
|
"id": "chatcmpl-local",
|
|
"object": "chat.completion",
|
|
"choices": [
|
|
{
|
|
"index": 0,
|
|
"message": {
|
|
"role": "assistant",
|
|
"content": response
|
|
}
|
|
}
|
|
]
|
|
} |