Nikyapp / exercise1.py
Nicolle1997's picture
Upload folder using huggingface_hub
d5abc0d verified
# Start with imports - ask ChatGPT to explain any package that you don't know
import datetime
import os
import json
from dotenv import load_dotenv
from openai import OpenAI
from anthropic import Anthropic
from IPython.display import Markdown, display
# Always remember to do this!
load_dotenv(override=True)
# Print the key prefixes to help with any debugging
openai_api_key = os.getenv('OPENAI_API_KEY')
anthropic_api_key = os.getenv('ANTHROPIC_API_KEY')
google_api_key = os.getenv('GOOGLE_API_KEY')
deepseek_api_key = os.getenv('DEEPSEEK_API_KEY')
groq_api_key = os.getenv('GROQ_API_KEY')
if openai_api_key:
print(f"OpenAI API Key exists and begins {openai_api_key[:8]}")
else:
print("OpenAI API Key not set")
if anthropic_api_key:
print(f"Anthropic API Key exists and begins {anthropic_api_key[:7]}")
else:
print("Anthropic API Key not set (and this is optional)")
if google_api_key:
print(f"Google API Key exists and begins {google_api_key[:2]}")
else:
print("Google API Key not set (and this is optional)")
if deepseek_api_key:
print(f"DeepSeek API Key exists and begins {deepseek_api_key[:3]}")
else:
print("DeepSeek API Key not set (and this is optional)")
if groq_api_key:
print(f"Groq API Key exists and begins {groq_api_key[:4]}")
else:
print("Groq API Key not set (and this is optional)")
file_name = "1_foundations\\prompt1.txt"
with open(file_name , mode="r", encoding="utf-8") as file:
request = file.read()
print(request)
messages = [{"role": "user", "content": request}]
# The API we know well
openai = OpenAI()
competitors = []
answers = []
model_name = "gpt-4o-mini"
response = openai.chat.completions.create(model=model_name, messages=messages)
answer = response.choices[0].message.content
display(Markdown(answer))
competitors.append(model_name)
answers.append(answer)
model_name = "claude-3-7-sonnet-latest"
claude = Anthropic()
response = claude.messages.create(model=model_name, messages=messages, max_tokens=1000)
answer = response.content[0].text
display(Markdown(answer))
competitors.append(model_name)
answers.append(answer)
gemini = OpenAI(api_key=google_api_key, base_url="https://generativelanguage.googleapis.com/v1beta/openai/")
model_name = "gemini-2.0-flash"
response = gemini.chat.completions.create(model=model_name, messages=messages)
answer = response.choices[0].message.content
display(Markdown(answer))
competitors.append(model_name)
answers.append(answer)
groq = OpenAI(api_key=groq_api_key, base_url="https://api.groq.com/openai/v1")
model_name = "llama-3.3-70b-versatile"
response = groq.chat.completions.create(model=model_name, messages=messages)
answer = response.choices[0].message.content
display(Markdown(answer))
competitors.append(model_name)
answers.append(answer)
ollama = OpenAI(base_url='http://localhost:11434/v1', api_key='ollama')
model_name = "llama3.2"
response = ollama.chat.completions.create(model=model_name, messages=messages)
answer = response.choices[0].message.content
display(Markdown(answer))
competitors.append(model_name)
answers.append(answer)
print(competitors)
print(answers)
# It's nice to know how to use "zip"
for competitor, answer in zip(competitors, answers):
print(f"Competitor: {competitor}\n\n{answer}")
together = ""
for index, answer in enumerate(answers):
together += f"# Response from competitor {index+1}\n\n"
together += answer + "\n\n"
judge = f"""Stai giudicando una competizione tra {len(competitors)} concorrenti.
A ogni modello è stata data questa domanda:
{request}
Il tuo compito è quello di valutare ogni risposta in base alla chiarezza e alla forza delle argomentazioni e di classificarle in ordine dalla migliore alla peggiore.
Rispondi con JSON, e solo JSON, con il seguente formato:
{{"results": ["numero miglior concorrente", "numero secondo miglior concorrente", "numero terzo miglior concorrente", ...], "docx_link": "link al documento con la risposta migliore"}}
Qui ci sono le risposte di ogni concorrente:
{together}
Ora rispondi con il JSON con l'ordine di classifica dei concorrenti, ed il link al documento dove hai inserito la risposta miugliore; nient'altro. Non includere la formattazione markdown o i blocchi di codice."""
judge_messages = [{"role": "user", "content": judge}]
# Judgement time!
ollama = OpenAI(base_url='http://localhost:11434/v1', api_key='ollama')
model_name = "llama3.2"
response = ollama.chat.completions.create(model=model_name, messages=judge_messages)
results = response.choices[0].message.content
print(results)
results_dict = json.loads(results)
ranks = results_dict["results"]
for index, result in enumerate(ranks):
competitor = competitors[int(result)-1]
print(f"Rank {index+1}: {competitor}")
# Salva la risposta migliore in un file con timestamp
now = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
filename = f"answer_{now}.txt"
best_index = int(ranks[0]) - 1
best_answer = answers[best_index]
print(f"La risposta migliore è: {best_answer}")
with open(filename, "w", encoding="utf-8") as f:
# La risposta migliore è quella del primo classificato
f.write(best_answer)
print(f"Risposta migliore salvata in {filename}")