Как вернуть ответ на запрос HTTP Get из класса models в проекте Django

Я пытаюсь получить ответ от API ассистентов OpenAi, используя проект Django.

Я реализую класс модели внутри models.py следующим образом:

from django.db import models
from typing_extensions import override
from openai import AssistantEventHandler
from django.http import HttpResponse

# Create your models here.

class Eventhandler(models.Model,AssistantEventHandler):
class meta:
 managed = False

 @override
 def on_text_created(self, text) -> None:
  print(f"\nassistant > ", end="", flush=True)
  
 @override
 def on_text_delta(self, delta, snapshot):
  print(delta.value, end="", flush=True)
  
def on_tool_call_created(self, tool_call):
 print(f"\nassistant > {tool_call.type}\n", flush=True)

def on_tool_call_delta(self, delta, snapshot):
 if delta.type == 'code_interpreter':
  if delta.code_interpreter.input:
    print(delta.code_interpreter.input, end="", flush=True)
  if delta.code_interpreter.outputs:
    print(f"\n\noutput >", flush=True)
    for output in delta.code_interpreter.outputs:
      if output.type == "logs":
        print(f"\n{output.logs}", flush=True)

Теперь, что важно, так это то, что класс Eventhandler отправляет ответ обратно клиенту! Я получаю исключение типа: ValueError: Представление theassistantcallerapp.views.callerview не вернуло объект HttpResponse. Вместо этого оно вернуло None. Итак, callerview - это представление внутри views.py. Оно сопоставляется с URL, который начнет GET-запрос к API OpenAi Assistants.

Эту реализацию я использую для потоковых ответов. Итак, вот представление внутри views.py и ЗАМЕТЬТЕ, КАК ИСПОЛЬЗУЕТСЯ КЛАСС EVENTHANDLER

#inside views.py
# this is  callerview(request, paramm):

thread = client.beta.threads.create()

message = client.beta.threads.messages.create( thread_id=thread.id,role="user",
        content=otro)   

myeventhandler = Eventhandler() <-----------NOTICE HERE!!!!!!!!!!!!!

with client.beta.threads.runs.create_and_stream(
thread_id=thread.id,
assistant_id="asst_dddfffggg",
instructions="Please address the user as Donkey Kong. The user has a premium account.",
event_handler=myeventhandler,  <-----------NOTICE HERE!!!!!!!!!!!!!
   ) as stream:
  stream.until_done()

Как заставить класс Eventhandler внутри models.py возвращать ответ от API OpenAi Assistants?

Вернуться на верх