Как переслать ответ потока OpenAI с помощью FastAPI в Python?Python

Программы на Python
Anonymous
Как переслать ответ потока OpenAI с помощью FastAPI в Python?

Сообщение Anonymous »

Это мой код для получения ответа потока из модели OpenAI, основанной на событиях. (Я показал только основную часть)

Код: Выделить всё

client = OpenAI(api_key=OPEN_AI_API_KEY)

class EventHandler(AssistantEventHandler):
def on_text_delta(self, delta: TextDelta, snapshot: Text):
print(delta.value)

with client.beta.threads.runs.stream(
thread_id=thread_id,
assistant_id=assistant_id,
event_handler=EventHandler()
) as stream:
stream.until_done()
Событие on_text_delta срабатывает при поступлении токенов от API. Я хочу переслать этот ответ с помощью FastAPI, а не печатать на экране вывода.

Код: Выделить всё

@app.get("/stream")
async def stream():
return ...something...
Я пробовал ответить на результат как часть тела HTTP:

Код: Выделить всё

from fastapi.responses import StreamingResponse

...

@app.post("/stream")
async def stream():
with client.beta.threads.runs.stream(
thread_id=thread_id,
assistant_id=assistant_id,
event_handler=EventHandler()
) as stream:
stream.until_done()

return StreamingResponse(EventHandler.generator_function(), media_type="text/plain")
Я создал функцию-генератор внутри класса EventHandler, но проблема в том, что пока поток не закончится, выполнение не достигнет оператора возврата.
Я также пробовал веб-сокеты, но проблема все еще в том, как должно проходить выполнение моей программы. Поток не позволяет выполняться дальше, пока не будет завершен ответ API.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python

Вернуться в «Python»