import openai import os from calling_functions import ( ADD_DECIMAL_AND_HEXADECIMAL_FUNCTION_SCHEMA, add_decimal_values, # noqa add_hexadecimal_values, # noqa ) # Definición de las funciones de Chat def get_initial_message(): messages = [ { "role": "system", "content": "Hola, soy ProPilot. Si deseas probar el function calling que tengo configurado solo pregunta: Cual es la suma de 24 y el valor hexadecimal F?", }, ] return messages def get_chatgpt_response(messages, model): openai.api_base = "https://oai.hconeai.com/v1" HELICONE_API_KEY = os.getenv("HELICONE_API_KEY") intermediate_results = [] while True: response = openai.ChatCompletion.create( model=model, messages=messages, functions=ADD_DECIMAL_AND_HEXADECIMAL_FUNCTION_SCHEMA, temperature=0, headers={ "Helicone-Auth": f"Bearer {HELICONE_API_KEY}", "Helicone-Cache-Enabled": "true", "Helicone-Property-App": "HuggingFaceProPilot", "Helicone-Property-DataSource": "FunctionsCallingDemo", } ) if response.choices[0]["finish_reason"] == "stop": final_answer = response.choices[0]["message"]["content"] return final_answer elif response.choices[0]["finish_reason"] == "function_call": fn_name = response.choices[0]["message"]["function_call"]["name"] arguments = response.choices[0]["message"]["function_call"]["arguments"] function = globals()[fn_name] result = function(arguments) if isinstance(result, dict) and "result" in result: result = result["result"] intermediate_results.append(str(result)) # Remove intermediate results from the messages messages = messages[:-len(intermediate_results)] # Append the final answer as a system message messages.append( { "role": "system", "content": intermediate_results[-1] } ) def update_chat(messages, role, content): messages.append( {"role": role, "content": content}, ) return messages