3333DEFAULT_RETRIEVAL_CONFIG = RetrievalConfig (top_k = 3 , method = RetrievalMethod .USER_MESSAGE )
3434
3535
36+ def _get_assistant_dict_params (
37+ memory : Optional [Union [AssistantMemory , Dict [str , Any ]]] = None ,
38+ tools : Optional [List [Union [AssistantTool , Dict [str , Any ]]]] = None ,
39+ retrievals : Optional [List [Union [AssistantRetrieval , Dict [str , Any ]]]] = None ,
40+ retrieval_configs : Optional [Union [RetrievalConfig , Dict [str , Any ]]] = None ,
41+ ):
42+ memory = memory if isinstance (memory , AssistantMemory ) else (AssistantMemory (** memory ) if memory else None )
43+ tools = [tool if isinstance (tool , AssistantTool ) else AssistantTool (** tool ) for tool in (tools or [])] or None
44+ retrievals = [
45+ retrieval if isinstance (retrieval , AssistantRetrieval ) else AssistantRetrieval (** retrieval )
46+ for retrieval in (retrievals or [])
47+ ] or None
48+ retrieval_configs = (
49+ retrieval_configs
50+ if isinstance (retrieval_configs , RetrievalConfig )
51+ else RetrievalConfig (** retrieval_configs )
52+ if retrieval_configs
53+ else None
54+ )
55+ return memory , tools , retrievals , retrieval_configs
56+
57+
3658def list_assistants (
3759 order : str = "desc" ,
3860 limit : int = 20 ,
@@ -118,12 +140,12 @@ async def a_get_assistant(assistant_id: str) -> Assistant:
118140
119141def create_assistant (
120142 model_id : str ,
121- memory : AssistantMemory ,
143+ memory : Union [ AssistantMemory , Dict [ str , Any ]] ,
122144 name : Optional [str ] = None ,
123145 description : Optional [str ] = None ,
124146 system_prompt_template : Optional [List [str ]] = None ,
125- tools : Optional [List [AssistantTool ]] = None ,
126- retrievals : Optional [List [AssistantRetrieval ]] = None ,
147+ tools : Optional [List [Union [ AssistantTool , Dict [ str , Any ]] ]] = None ,
148+ retrievals : Optional [List [Union [ AssistantRetrieval , Dict [ str , Any ]] ]] = None ,
127149 retrieval_configs : Optional [Union [RetrievalConfig , Dict [str , Any ]]] = None ,
128150 metadata : Optional [Dict [str , str ]] = None ,
129151) -> Assistant :
@@ -140,12 +162,9 @@ def create_assistant(
140162 :param metadata: The assistant metadata. It can store up to 16 key-value pairs where each key's length is less than 64 and value's length is less than 512.
141163 :return: The created assistant object.
142164 """
143- if retrieval_configs :
144- retrieval_configs = (
145- retrieval_configs
146- if isinstance (retrieval_configs , RetrievalConfig )
147- else RetrievalConfig (** retrieval_configs )
148- )
165+ memory , tools , retrievals , retrieval_configs = _get_assistant_dict_params (
166+ memory = memory , tools = tools , retrievals = retrievals , retrieval_configs = retrieval_configs
167+ )
149168
150169 body = AssistantCreateRequest (
151170 model_id = model_id ,
@@ -164,12 +183,12 @@ def create_assistant(
164183
165184async def a_create_assistant (
166185 model_id : str ,
167- memory : AssistantMemory ,
186+ memory : Union [ AssistantMemory , Dict [ str , Any ]] ,
168187 name : Optional [str ] = None ,
169188 description : Optional [str ] = None ,
170189 system_prompt_template : Optional [List [str ]] = None ,
171- tools : Optional [List [AssistantTool ]] = None ,
172- retrievals : Optional [List [AssistantRetrieval ]] = None ,
190+ tools : Optional [List [Union [ AssistantTool , Dict [ str , Any ]] ]] = None ,
191+ retrievals : Optional [List [Union [ AssistantRetrieval , Dict [ str , Any ]] ]] = None ,
173192 retrieval_configs : Optional [Union [RetrievalConfig , Dict [str , Any ]]] = None ,
174193 metadata : Optional [Dict [str , str ]] = None ,
175194) -> Assistant :
@@ -186,12 +205,9 @@ async def a_create_assistant(
186205 :param metadata: The assistant metadata. It can store up to 16 key-value pairs where each key's length is less than 64 and value's length is less than 512.
187206 :return: The created assistant object.
188207 """
189- if retrieval_configs :
190- retrieval_configs = (
191- retrieval_configs
192- if isinstance (retrieval_configs , RetrievalConfig )
193- else RetrievalConfig (** retrieval_configs )
194- )
208+ memory , tools , retrievals , retrieval_configs = _get_assistant_dict_params (
209+ memory = memory , tools = tools , retrievals = retrievals , retrieval_configs = retrieval_configs
210+ )
195211
196212 body = AssistantCreateRequest (
197213 model_id = model_id ,
@@ -214,9 +230,9 @@ def update_assistant(
214230 name : Optional [str ] = None ,
215231 description : Optional [str ] = None ,
216232 system_prompt_template : Optional [List [str ]] = None ,
217- memory : Optional [AssistantMemory ] = None ,
218- tools : Optional [List [AssistantTool ]] = None ,
219- retrievals : Optional [List [AssistantRetrieval ]] = None ,
233+ memory : Optional [Union [ AssistantMemory , Dict [ str , Any ]] ] = None ,
234+ tools : Optional [List [Union [ AssistantTool , Dict [ str , Any ]] ]] = None ,
235+ retrievals : Optional [List [Union [ AssistantRetrieval , Dict [ str , Any ]] ]] = None ,
220236 retrieval_configs : Optional [Union [RetrievalConfig , Dict [str , Any ]]] = None ,
221237 metadata : Optional [Dict [str , str ]] = None ,
222238) -> Assistant :
@@ -235,12 +251,10 @@ def update_assistant(
235251 :return: The updated assistant object.
236252 """
237253
238- if retrieval_configs :
239- retrieval_configs = (
240- retrieval_configs
241- if isinstance (retrieval_configs , RetrievalConfig )
242- else RetrievalConfig (** retrieval_configs )
243- )
254+ memory , tools , retrievals , retrieval_configs = _get_assistant_dict_params (
255+ memory = memory , tools = tools , retrievals = retrievals , retrieval_configs = retrieval_configs
256+ )
257+
244258 body = AssistantUpdateRequest (
245259 model_id = model_id ,
246260 name = name ,
@@ -262,9 +276,9 @@ async def a_update_assistant(
262276 name : Optional [str ] = None ,
263277 description : Optional [str ] = None ,
264278 system_prompt_template : Optional [List [str ]] = None ,
265- memory : Optional [AssistantMemory ] = None ,
266- tools : Optional [List [AssistantTool ]] = None ,
267- retrievals : Optional [List [AssistantRetrieval ]] = None ,
279+ memory : Optional [Union [ AssistantMemory , Dict [ str , Any ]] ] = None ,
280+ tools : Optional [List [Union [ AssistantTool , Dict [ str , Any ]] ]] = None ,
281+ retrievals : Optional [List [Union [ AssistantRetrieval , Dict [ str , Any ]] ]] = None ,
268282 retrieval_configs : Optional [Union [RetrievalConfig , Dict [str , Any ]]] = None ,
269283 metadata : Optional [Dict [str , str ]] = None ,
270284) -> Assistant :
@@ -283,12 +297,10 @@ async def a_update_assistant(
283297 :return: The updated assistant object.
284298 """
285299
286- if retrieval_configs :
287- retrieval_configs = (
288- retrieval_configs
289- if isinstance (retrieval_configs , RetrievalConfig )
290- else RetrievalConfig (** retrieval_configs )
291- )
300+ memory , tools , retrievals , retrieval_configs = _get_assistant_dict_params (
301+ memory = memory , tools = tools , retrievals = retrievals , retrieval_configs = retrieval_configs
302+ )
303+
292304 body = AssistantUpdateRequest (
293305 model_id = model_id ,
294306 name = name ,
0 commit comments