vJul / ai_llm.py
deepaksj's picture
Update ai_llm.py
cbc8326 verified
from together import Together
from openai import OpenAI
import os
import json
class AI_LLM:
def __init__(self):
self.llm_version = os.getenv("LLM_VERSION")
if self.llm_version == "OPENAI":
self.client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
self.model = "gpt-4.1-mini-2025-04-14"
else:
self.client = OpenAI(api_key=os.getenv("TOGETHER_API_KEY"), base_url="https://api.together.xyz/v1")
self.model = "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8"
print(f"Using model: {self.model})")
def talk_to_LLM(self, messages, functions_list, functions_module, stage_key_values):
function_output = { "text": []}
completion = self.client.chat.completions.create(
model = self.model,
messages = messages,
tools = functions_list,
).choices[0].message
if completion.tool_calls:
messages.append(completion)
for tool_call in completion.tool_calls:
function_name = tool_call.function.name
function_args = json.loads(tool_call.function.arguments)
function = getattr(functions_module, function_name, None)
if function:
function_output = function(**function_args, stage_key_values=stage_key_values)
for msg in function_output["text"]:
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": msg,
})
else:
print(f"Function {function_name} not found in module {functions_module.__name__}")
else:
messages.append({
"role": "assistant",
"content": completion.content,
})
function_output["text"].append(completion.content)
return function_output
def get_structured_output(self, messages, structured_output_schema, functions_module, stage_key_values):
function_output = {"text": []}
print("Structured output: 1")
completion = self.client.chat.completions.create(
model=self.model,
messages=messages,
response_format=structured_output_schema
).choices[0].message
print(completion.content)
print("Structured output: 2")
function = getattr(functions_module, "process_structured_output", None)
if function:
function_output = function(completion.content, stage_key_values=stage_key_values)
else:
print(f"Function 'process_structured_output' not found in module {functions_module.__name__}")
messages.append({
"role": "assistant",
"content": completion.content,
})
function_output["text"].append(completion.content)
return function_output