in Utils/llm/api.py [0:0]
def request_openai_format_data(system_prompt, messages, model):
config = API[model]()
skip_system = config.get("skip_system", False)
headers = {
'Content-Type': 'application/json',
'Api-Key': config["api_key"],
"Authorization": f"Bearer {config['api_key']}",
}
payload = {
'model': config["model_id"],
'messages': ([] if skip_system else [{'role': 'system', 'content': f'{system_prompt}'}]) + messages,
'temperature': temperature,
}
max_tokens = config.get("max_tokens")
if max_tokens is not None:
payload['max_tokens'] = max_tokens
response = requests.post(config["url"], headers=headers, json=payload, timeout=300)
if not response.ok:
raise APIException(response.status_code, response.content)
data = response.json()
result = {
"content": data["choices"][0]["message"]["content"],
"tokens": {
"input_tokens": data["usage"]["prompt_tokens"],
"output_tokens": data["usage"]["completion_tokens"],
}
}
if "reasoning_tokens" in data["usage"].get("completion_tokens_details", {}):
result["tokens"]["reasoning_tokens"] = data["usage"]["completion_tokens_details"]["reasoning_tokens"]
return result