bambadij's picture
fixe
2df1170
import gradio as gr
import pandas as pd
import numpy as np
import random
import time
from openai import OpenAI
from dotenv import load_dotenv
import logging
import os
import requests
logger = logging.getLogger(__name__)
load_dotenv()
GEMINI_API_KEY="AIzaSyCSmhKbTF_sGbk8tD0dptlqbP0A1R3tQRk"
GEMINI_URL="https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent"
# client = OpenAI(api_key=XAI_API_KEY, base_url=XAI_BASE)
def call_grok(user_msg:str,history:list[tuple[str, str]]):
# if not XAI_API_KEY:
# raise gr.Error("Please set the XAI_API_KEY environment variable.")
# messages=[{"role":"system","content":"Tu es u n assistant intelligent"}]
# for user, assistant in( history or []):
# if user:
# messages.append({"role":"user", "content":user})
# if assistant:
# messages.append({"role":"assistant", "content":assistant})
# messages.append({"role":"assistant","content":user_msg})
# try:
# response = client.chat.completions.create(
# model=XAI_MODEL,
# messages=messages,
# temperature=0,
# max_tokens=1024,
# top_p=1,
# frequency_penalty=0,
# presence_penalty=0,
# stop=None,
# )
# return response.choices[0].message.content.strip()
# except Exception as e:
# logger.error(f"Error calling Grok: {e}")
if not GEMINI_API_KEY:
raise gr.Error("Please set the GEMINI_API_KEY environment variable.")
contents=[]
SYSTEM_PROMPT = "Tu es un assistant utile, concis et amical. Réponds en français."
contents = []
for u, a in (history or []):
if u:
contents.append({"role": "user", "parts": [{"text": u}]})
if a:
contents.append({"role": "model", "parts": [{"text": a}]})
contents.append({"role": "user", "parts": [{"text": user_msg}]})
url =f"{GEMINI_URL}?key={GEMINI_API_KEY}"
headers = {"Content-Type": "application/json"}
payload = {
# 👉 Le SEUL et unique message system est passé ici :
"systemInstruction": {
"role": "system",
"parts": [{"text": SYSTEM_PROMPT}] # une seule part !
},
"contents": contents
}
try:
resp=requests.post(url, json=payload, headers=headers)
except requests.RequestException as e:
logger.error(f"Error calling Gemini: {e}")
if resp.status_code == 200:
response = resp.json()
logger.info(f"Response from Gemini: {response}")
return response["candidates"][0]["content"]["parts"][0]["text"].strip()
else:
logger.error(f"Error calling Gemini: {resp.status_code} {resp.text}")
def chat_fn(message,history):
response = call_grok(message, history or [])
return response
with gr.Blocks() as demo:
gr.ChatInterface(chat_fn, title="MasterClass LLM + Gradio")
if __name__ == "__main__":
demo.launch()