Refactor agent API structure and add core functionality with FastAPI integration
This commit is contained in:
@@ -1,11 +0,0 @@
|
|||||||
FROM python:3.11-slim
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
COPY requirements.txt .
|
|
||||||
|
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
|
||||||
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
from fastapi import FastAPI
|
|
||||||
from openai import OpenAI
|
|
||||||
import os
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
# DeepSeek OpenAI-compatible endpoint
|
|
||||||
client = OpenAI(
|
|
||||||
api_key=os.getenv("DEEPSEEK_API_KEY"),
|
|
||||||
base_url="https://api.deepseek.com"
|
|
||||||
)
|
|
||||||
|
|
||||||
@app.post("/v1/chat/completions")
|
|
||||||
async def chat(data: dict):
|
|
||||||
|
|
||||||
messages = data["messages"]
|
|
||||||
|
|
||||||
repo_context = """
|
|
||||||
This assistant has access to the repository.
|
|
||||||
Help the user understand the codebase.
|
|
||||||
This repo is building an chatbot, currently still in early stages. The main files are:
|
|
||||||
- app.py: The main FastAPI application that defines the API endpoints and integrates with the Deep seek API.
|
|
||||||
- agent.py: Contains the logic for the chatbot agent, including how it processes messages and generates responses.
|
|
||||||
"""
|
|
||||||
|
|
||||||
messages.insert(0, {
|
|
||||||
"role": "system",
|
|
||||||
"content": repo_context
|
|
||||||
})
|
|
||||||
|
|
||||||
response = client.chat.completions.create(
|
|
||||||
model="deepseek-v4-flash",
|
|
||||||
messages=messages,
|
|
||||||
temperature=0.3
|
|
||||||
)
|
|
||||||
|
|
||||||
return response.model_dump()
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
fastapi
|
|
||||||
openai
|
|
||||||
uvicorn
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
from dotenv import load_dotenv
|
||||||
|
from pathlib import Path
|
||||||
|
import os
|
||||||
|
|
||||||
|
load_dotenv(Path(__file__).resolve().parent.parent.parent / ".env")
|
||||||
|
|
||||||
|
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
from openai import OpenAI
|
||||||
|
from .config import DEEPSEEK_API_KEY
|
||||||
|
|
||||||
|
client = OpenAI(
|
||||||
|
api_key=DEEPSEEK_API_KEY,
|
||||||
|
base_url="https://api.deepseek.com"
|
||||||
|
)
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
from fastapi import FastAPI
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
from .core.llm import client
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
# ---- request model ----
|
||||||
|
class ChatRequest(BaseModel):
|
||||||
|
message: str
|
||||||
|
|
||||||
|
|
||||||
|
# ---- basic health check ----
|
||||||
|
@app.get("/")
|
||||||
|
def root():
|
||||||
|
return {"status": "ok"}
|
||||||
|
|
||||||
|
|
||||||
|
# ---- test LLM endpoint ----
|
||||||
|
@app.post("/chat")
|
||||||
|
def chat(req: ChatRequest):
|
||||||
|
response = client.chat.completions.create(
|
||||||
|
model="deepseek-chat",
|
||||||
|
messages=[
|
||||||
|
{"role": "user", "content": req.message}
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"response": response.choices[0].message.content
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
FROM python:3.11-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY requirements.txt /app/requirements.txt
|
||||||
|
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
COPY . /app
|
||||||
|
|
||||||
|
ENV PYTHONPATH=/app
|
||||||
|
|
||||||
|
CMD ["uvicorn", "agent-api.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
fastapi
|
||||||
|
openai
|
||||||
|
uvicorn
|
||||||
|
python-dotenv
|
||||||
Reference in New Issue
Block a user