|
from openai import OpenAI |
|
import anthropic |
|
from together import Together |
|
import os |
|
from atla import Atla |
|
from dotenv import load_dotenv |
|
from .prompts import ( |
|
JUDGE_SYSTEM_PROMPT |
|
) |
|
|
|
load_dotenv() |
|
|
|
|
|
anthropic_client = anthropic.Anthropic() |
|
openai_client = OpenAI() |
|
together_client = Together() |
|
hf_api_key = os.getenv("HF_API_KEY") |
|
|
|
atla_client = Atla() |
|
|
|
def get_openai_response(model_name, prompt, system_prompt=JUDGE_SYSTEM_PROMPT, max_tokens=500, temperature=0): |
|
"""Get response from OpenAI API""" |
|
try: |
|
response = openai_client.chat.completions.create( |
|
model=model_name, |
|
messages=[ |
|
{"role": "system", "content": system_prompt}, |
|
{"role": "user", "content": prompt}, |
|
], |
|
max_completion_tokens=max_tokens, |
|
temperature=temperature, |
|
) |
|
return response.choices[0].message.content |
|
except Exception as e: |
|
return f"Error with OpenAI model {model_name}: {str(e)}" |
|
|
|
def get_anthropic_response(model_name, prompt, system_prompt=JUDGE_SYSTEM_PROMPT, max_tokens=500, temperature=0): |
|
"""Get response from Anthropic API""" |
|
try: |
|
response = anthropic_client.messages.create( |
|
model=model_name, |
|
max_tokens=max_tokens, |
|
temperature=temperature, |
|
system=system_prompt, |
|
messages=[{"role": "user", "content": [{"type": "text", "text": prompt}]}], |
|
) |
|
return response.content[0].text |
|
except Exception as e: |
|
return f"Error with Anthropic model {model_name}: {str(e)}" |
|
|
|
|
|
def get_atla_response(model_name, prompt, system_prompt=None, max_tokens=500, temperature=0.01): |
|
"""Get response from Atla API""" |
|
try: |
|
|
|
model_input = prompt.get('human_input', '') |
|
model_output = prompt.get('ai_response', '') |
|
expected_output = prompt.get('ground_truth') |
|
evaluation_criteria = prompt.get('eval_criteria', '') |
|
|
|
response = atla_client.evaluation.create( |
|
model_id=model_name, |
|
model_input=model_input, |
|
model_output=model_output, |
|
expected_model_output=expected_output if expected_output else None, |
|
evaluation_criteria=evaluation_criteria, |
|
) |
|
|
|
|
|
return { |
|
"score": response.result.evaluation.score, |
|
"critique": response.result.evaluation.critique |
|
} |
|
except Exception as e: |
|
return f"Error with Atla model {model_name}: {str(e)}" |