Spaces:
Sleeping
Sleeping
File size: 3,373 Bytes
1f52162 e96884e 1f52162 e96884e 1f52162 e96884e 1f52162 e96884e 1f52162 e96884e 1f52162 e96884e 1f52162 e96884e 1f52162 e96884e 1f52162 e96884e 1f52162 e96884e 1f52162 |
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 |
import os
import json
import httpx
import gradio as gr
from huggingface_hub import InferenceClient
from openai import OpenAI
from dotenv import load_dotenv
# Load API keys from .env file
load_dotenv()
HF_API_KEY = os.getenv("HF_API_KEY")
OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY")
# Initialize Hugging Face Gemma Client
hf_client = InferenceClient(
provider="hf-inference",
api_key=HF_API_KEY
)
# Initialize OpenRouter DeepSeek Client
openrouter_client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=OPENROUTER_API_KEY
)
# Function to query Gemma-2-27B (Hugging Face)
def query_gemma(user_input):
try:
messages = [{"role": "user", "content": user_input}]
completion = hf_client.chat.completions.create(
model="google/gemma-2-27b-it",
messages=messages,
max_tokens=500
)
return completion.choices[0].message["content"]
except Exception as e:
return f"Error querying Gemma: {str(e)}"
# Function to query DeepSeek-R1 (OpenRouter)
def query_deepseek(user_input):
try:
completion = openrouter_client.chat.completions.create(
model="deepseek/deepseek-r1:free",
messages=[{"role": "user", "content": user_input}]
)
return completion.choices[0].message.content
except Exception as e:
return f"Error querying DeepSeek: {str(e)}"
# Function to refine responses using DeepSeek
def refine_response(user_input):
try:
# Get responses from both models
gemma_response = query_gemma(user_input)
deepseek_response = query_deepseek(user_input)
# If either response failed, return the available one
if "Error" in gemma_response:
return f"Only DeepSeek Response:\n{deepseek_response}"
if "Error" in deepseek_response:
return f"Only Gemma Response:\n{gemma_response}"
# Prepare refinement prompt
improvement_prompt = f"""
Here are two AI-generated responses:
Response 1 (Gemma): {gemma_response}
Response 2 (DeepSeek): {deepseek_response}
Please combine the best elements of both, improve clarity, and provide a final refined answer.
"""
# Send request to OpenRouter
response = httpx.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={
"Authorization": f"Bearer {OPENROUTER_API_KEY}",
"Content-Type": "application/json"
},
json={
"model": "deepseek/deepseek-r1:free",
"messages": [{"role": "user", "content": improvement_prompt}]
}
)
# Print raw response for debugging
print("OpenRouter Response:", response.text)
# Check if response is valid JSON
response_json = response.json()
return response_json["choices"][0]["message"]["content"]
except Exception as e:
return f"Error refining response: {str(e)}"
# Create Gradio interface
iface = gr.Interface(
fn=refine_response,
inputs=gr.Textbox(lines=2, placeholder="Ask me anything..."),
outputs="text",
title="AI Response Enhancer",
description="Get responses from both Gemma and DeepSeek, then receive an improved final answer."
)
# Launch app
iface.launch()
|