Spaces:
Sleeping
Sleeping
File size: 4,915 Bytes
3230243 ccf4f83 0d47e33 ccf4f83 3230243 ccf4f83 3230243 0d47e33 3230243 0d47e33 3230243 ccf4f83 3230243 ccf4f83 3230243 ccf4f83 3230243 ccf4f83 3230243 ccf4f83 3230243 ccf4f83 3230243 ccf4f83 3230243 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# -*- coding: utf-8 -*-
"""
Created on Mon Feb 24 12:03:11 2025
@author: MIPO10053340
"""
#JWT
from dotenv import load_dotenv
load_dotenv()
import os
import numpy as np
import pandas as pd
from scipy.stats import entropy
# API Clients
from mistralai import Mistral
from openai import OpenAI
# from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
# ⚙️ Configurations API (remplace par tes clés API)
MISTRAL_API_KEY = os.getenv('MISTRAL_API_KEY_static')
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY_static')
# ANTHROPIC_API_KEY = os.getenv('ANTHROPIC_API_KEY_static')
# LLAMA_API_KEY = os.getenv('LLAMA_API_KEY_static')
# HUGGINGFACE_TOKEN =os.getenv('HUGGINGFACE_TOKEN_static')
# 📌 Choix des modèles à utiliser
USE_MODELS = {
"mistral": True,
"gpt-4": False,
"llama": False, # Active si tu veux l'utiliser
"qwen": False,
"deepseek": False
}
# 📊 Fonction pour calculer l'entropie des réponses
def calculate_entropy(text):
tokens = text.split()
probas = np.array([tokens.count(word) / len(tokens) for word in set(tokens)])
return entropy(probas)
# 🚀 Fonction pour interroger les modèles
def get_model_responses(question):
responses = {}
# # 🔹 MISTRAL
if USE_MODELS["mistral"]:
# Initialisation du client Mistral
client = Mistral(api_key=MISTRAL_API_KEY)
# Créer une complétion de chat
response = client.chat.complete(
model="mistral-medium",
messages=[
{"role": "user", "content": question}
]
)
# Extraire et afficher la réponse
text_response = response.choices[0].message.content
responses["mistral-medium"] = {"response": text_response, "entropy": calculate_entropy(text_response)}
# 🔹 GPT-4 (OpenAI)
if USE_MODELS["gpt-4"]:
# Initialisation du client OpenAI
client = OpenAI(api_key=OPENAI_API_KEY)
# Créer une complétion de chat
response = client.chat.completions.create(
model="gpt-4-turbo",
messages=[
{"role": "user", "content": question}
]
)
# Extraire et afficher la réponse
text_response = response.choices[0].message.content
responses["gpt-4-turbo"] = {"response": text_response, "entropy": calculate_entropy(text_response)}
# # 🔹 LLAMA (Hugging Face)
# if USE_MODELS["llama"]:
# model_id = "meta-llama/Llama-2-7b-chat-hf"
# tokenizer = AutoTokenizer.from_pretrained(model_id, use_auth_token=HUGGINGFACE_TOKEN)
# model = AutoModelForCausalLM.from_pretrained(model_id, use_auth_token=HUGGINGFACE_TOKEN)
# pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
# text_response = pipe(question, max_length=300)[0]["generated_text"]
# responses["llama"] = {"response": text_response, "entropy": calculate_entropy(text_response)}
# # 🔹 QWEN (Hugging Face)
# if USE_MODELS["qwen"]:
# model_id = "Qwen/Qwen-7B-Chat"
# tokenizer = AutoTokenizer.from_pretrained(model_id, token=HUGGINGFACE_TOKEN, trust_remote_code=True)
# model = AutoModelForCausalLM.from_pretrained(model_id, token=HUGGINGFACE_TOKEN, trust_remote_code=True)
# pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
# text_response = pipe(question, max_length=300)[0]["generated_text"]
# responses["qwen"] = {"response": text_response, "entropy": calculate_entropy(text_response)}
# # 🔹 DEEPSEEK (Hugging Face)
# if USE_MODELS["deepseek"]:
# model_id = "deepseek-ai/deepseek-7b-chat"
# tokenizer = AutoTokenizer.from_pretrained(model_id)
# model = AutoModelForCausalLM.from_pretrained(model_id)
# pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
# text_response = pipe(question, max_length=300)[0]["generated_text"]
# responses["deepseek"] = {"response": text_response, "entropy": calculate_entropy(text_response)}
return responses
# 📌 Question de test
question = "Quels sont les besoins en protéines des poulets de chair en phase de croissance ?"
# 🔥 Exécuter le test
results = get_model_responses(question)
# 📊 Afficher les résultats
df = pd.DataFrame.from_dict(results, orient="index")
print(df)
# 💾 Sauvegarde en .txt
with open("model_responses.txt", "w", encoding="utf-8") as f:
for model, data in results.items():
f.write(f"🔹 Modèle : {model.upper()}\n")
f.write(f"Réponse :\n{data['response']}\n")
f.write(f"📊 Entropie : {data['entropy']:.4f}\n")
f.write("=" * 50 + "\n\n")
print("\n✅ Réponses enregistrées dans 'model_responses.txt'")
|