import gradio as gr
from root import RootSignals
client = None
custom_judge = None
MODELS = [
"claude-3-5-sonnet",
"claude-3-haiku-20240307",
"claude-3-opus-20240229",
"claude-3-sonnet-20240229",
"codestral",
"command-r",
"command-r-plus",
"fireworks_ai/llama-v3-70b-instruct",
"gpt-4",
"gpt-4o",
"gpt-4o-mini",
"gpt-4-turbo",
"groq/llama3-70b-8192",
"mistral-large-latest",
"mistral-medium",
"o1-mini",
"o1-preview",
"open-codestral-mamba",
]
def initialize_client(api_key):
global client
return RootSignals(api_key=api_key)
def create_judge(api_key, judge_name, intent, judge_prompt):
global client, custom_judge
if not client:
client = initialize_client(api_key)
# Create custom judge
custom_judge = client.evaluators.create(
name=judge_name,
predicate=judge_prompt + " {{output}}",
intent=intent,
model="gpt-4o",
)
return gr.Info(f"Custom LLM-Judge '{judge_name}' is created successfully!")
def evaluate_response(llm_response):
global client, custom_judge
if not client or not custom_judge:
return "Please create a judge first", "Please create a judge first"
# Run evaluation using custom judge
evaluation_result = custom_judge.run(response=llm_response)
score = evaluation_result.score
justification = evaluation_result.justification
return score, justification
# Create the interface with a custom layout
with gr.Blocks(theme=gr.themes.Default(primary_hue="blue")) as demo:
gr.HTML("""
""")
with gr.Row():
gr.Image(value="https://app.rootsignals.ai/images/root-signals-color.svg", height=70)
gr.Markdown("