11import json
2+ from logging import getLogger
3+ from typing import List
4+
5+ import openai
6+ from openai .types .chat import ChatCompletionToolChoiceOptionParam
27
38from mindsdb_sdk .databases import Database
49from tenacity import retry , wait_random_exponential , stop_after_attempt
510
611
7- @retry (wait = wait_random_exponential (multiplier = 1 , max = 40 ), stop = stop_after_attempt (3 ))
8- def chat_completion_request (client , model , messages , tools = None , tool_choice = None ):
12+ DEFAULT_RETRY_MULTIPLIER = 1
13+ DEFAULT_MAX_WAIT = 40
14+ DEFAULT_STOP_AFTER_ATTEMPT = 3
15+
16+ logger = getLogger (__name__ )
17+
18+
19+ @retry (wait = wait_random_exponential (multiplier = DEFAULT_RETRY_MULTIPLIER , max = DEFAULT_MAX_WAIT ), stop = stop_after_attempt (
20+ DEFAULT_RETRY_MULTIPLIER
21+ ))
22+ def chat_completion_request (
23+ client : openai .OpenAI ,
24+ model : str ,
25+ messages : List [dict ],
26+ tools : List = None ,
27+ tool_choice : ChatCompletionToolChoiceOptionParam = None
28+ ):
929 try :
1030 response = client .chat .completions .create (
1131 model = model ,
@@ -15,8 +35,8 @@ def chat_completion_request(client, model, messages, tools=None, tool_choice=Non
1535 )
1636 return response
1737 except Exception as e :
18- print ("Unable to generate ChatCompletion response" )
19- print (f"Exception: { e } " )
38+ logger . warning ("Unable to generate ChatCompletion response" )
39+ logger . warning (f"Exception: { e } " )
2040 return e
2141
2242
@@ -153,7 +173,7 @@ def litellm_text2sql_callback_tool(
153173 "description" :"Data source name" ,
154174 },
155175 "connection_args" :{
156- "type" :"object " ,
176+ "type" :"string " ,
157177 "description" :"Connection arguments for the data source" ,
158178 },
159179 "description" :{
@@ -246,12 +266,12 @@ def pretty_print_conversation(messages):
246266
247267 for message in messages :
248268 if message ["role" ] == "system" :
249- print (colored (f"system: { message ['content' ]} \n " , role_to_color [message ["role" ]]))
269+ logger . info (colored (f"system: { message ['content' ]} \n " , role_to_color [message ["role" ]]))
250270 elif message ["role" ] == "user" :
251- print (colored (f"user: { message ['content' ]} \n " , role_to_color [message ["role" ]]))
271+ logger . info (colored (f"user: { message ['content' ]} \n " , role_to_color [message ["role" ]]))
252272 elif message ["role" ] == "assistant" and message .get ("function_call" ):
253- print (colored (f"assistant: { message ['function_call' ]} \n " , role_to_color [message ["role" ]]))
273+ logger . info (colored (f"assistant: { message ['function_call' ]} \n " , role_to_color [message ["role" ]]))
254274 elif message ["role" ] == "assistant" and not message .get ("function_call" ):
255- print (colored (f"assistant: { message ['content' ]} \n " , role_to_color [message ["role" ]]))
275+ logger . info (colored (f"assistant: { message ['content' ]} \n " , role_to_color [message ["role" ]]))
256276 elif message ["role" ] == "function" :
257- print (colored (f"function ({ message ['name' ]} ): { message ['content' ]} \n " , role_to_color [message ["role" ]]))
277+ logger . info (colored (f"function ({ message ['name' ]} ): { message ['content' ]} \n " , role_to_color [message ["role" ]]))
0 commit comments