backend to interface with ai models

This commit is contained in:
Andrei Stoica 2024-02-20 11:31:01 -05:00
parent e20c6f04ba
commit 70da8a4ddb
6 changed files with 60 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
**/.venv/
**/__pycache__/

View File

@ -0,0 +1 @@
OPENAI_API_KEY=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

View File

@ -0,0 +1,53 @@
from openai import OpenAI
from fastapi import FastAPI, File, Response, Request
from fastapi.responses import JSONResponse
from fastapi.encoders import jsonable_encoder
from json import dumps
from pydantic import BaseModel
import filetype
import whisper
app = FastAPI()
openAI_clinet = OpenAI()
model = whisper.load_model("base")
class ConversationMessege(BaseModel):
role: str
content: str
class Conversation(BaseModel):
messages: list[ConversationMessege]
@app.post("/get-text")
def get_text(response: Response, audio: bytes = File()):
response.headers["Access-Control-Allow-Origin"] = "*"
with open("audio", "wb") as f:
f.write(audio)
print(len(audio))
# transcript = openAI_clinet.audio.transcriptions.create(
# model="whisper-1",
# file=audio,
# response_format="text",
# RequestBody
# )
result = model.transcribe("audio")
data = {"len": len(audio), "user-transcript": result["text"]}
return data
@app.post("/conversation")
async def get_next_response(request: Request, response: Response):
response.headers["Access-Control-Allow-Origin"] = "*"
messages = await request.json()
res = openAI_clinet.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
)
res_msg = res.choices[0].message.content
role = res.choices[0].message.role
print(res_msg)
return {"role": role, "content": res_msg}

BIN
speech-speech/backend/audio Normal file

Binary file not shown.

View File

@ -0,0 +1,4 @@
openai
fastapi
uvicorn
python-multipart