22import logging
33import warnings
44from uuid import UUID , uuid4
5- from typing import Any , List
5+ from typing import Any , List , Optional
66from dataclasses import dataclass , field , fields , asdict , replace
77
88from openai import OpenAI , OpenAIError
@@ -67,7 +67,7 @@ class AssistantOptions(BaseModel):
6767
6868
6969class CallbackRequest (BaseModel ):
70- callback_url : HttpUrl
70+ callback_url : Optional [ HttpUrl ] = None
7171
7272
7373class CreationRequest (
@@ -86,9 +86,28 @@ class DeletionRequest(CallbackRequest):
8686
8787
8888class CallbackHandler :
89+ def __init__ (self , payload : ResponsePayload ):
90+ self .payload = payload
91+
92+ def fail (self , body ):
93+ raise NotImplementedError ()
94+
95+ def success (self , body ):
96+ raise NotImplementedError ()
97+
98+
99+ class SilentCallback (CallbackHandler ):
100+ def fail (self , body ):
101+ return
102+
103+ def success (self , body ):
104+ return
105+
106+
107+ class WebHookCallback (CallbackHandler ):
89108 def __init__ (self , url : HttpUrl , payload : ResponsePayload ):
109+ super ().__init__ (payload )
90110 self .url = url
91- self .payload = payload
92111
93112 def __call__ (self , response : APIResponse , status : str ):
94113 time = ResponsePayload .now ()
@@ -125,7 +144,10 @@ def do_create_collection(
125144 payload : ResponsePayload ,
126145):
127146 client = OpenAI (api_key = settings .OPENAI_API_KEY )
128- callback = CallbackHandler (request .callback_url , payload )
147+ if request .callback_url is None :
148+ callback = SilentCallback (payload )
149+ else :
150+ callback = WebHookCallback (request .callback_url , payload )
129151
130152 #
131153 # Create the assistant and vector store
@@ -160,6 +182,7 @@ def do_create_collection(
160182
161183 collection_crud = CollectionCrud (session , current_user .id )
162184 collection = Collection (
185+ id = UUID (payload .key ),
163186 llm_service_id = assistant .id ,
164187 llm_service_name = request .model ,
165188 )
0 commit comments