Athspi commited on
Commit
a63c2da
·
verified ·
1 Parent(s): 59b0fd7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +85 -54
app.py CHANGED
@@ -1,75 +1,106 @@
1
  import os
2
  import time
 
3
  import gradio as gr
4
- from huggingface_hub import InferenceClient
5
  from dotenv import load_dotenv
6
 
7
  # Load API keys from .env file
8
  load_dotenv()
9
- HF_API_KEY = os.getenv("HF_API_KEY") # Hugging Face API Key
10
- TOGETHER_API_KEY = os.getenv("TOGETHER_API_KEY") # Together AI API Key
11
-
12
- # Initialize clients
13
- gemma_client = InferenceClient(provider="hf-inference", api_key=HF_API_KEY)
14
- together_client = InferenceClient(provider="together", api_key=TOGETHER_API_KEY)
15
-
16
- # Function to query Hugging Face (Gemma)
17
- def query_gemma(user_input):
18
- messages = [{"role": "user", "content": user_input}]
19
- completion = gemma_client.chat.completions.create(
20
- model="google/gemma-2-27b-it",
21
- messages=messages,
22
- max_tokens=500
23
- )
24
- return completion.choices[0].message["content"]
25
-
26
- # Function to query Together (Llama)
27
- def query_llama(user_input):
28
- messages = [{"role": "user", "content": user_input}]
29
- completion = together_client.chat.completions.create(
30
- model="meta-llama/Llama-3.3-70B-Instruct",
31
- messages=messages,
32
- max_tokens=500
33
- )
34
- return completion.choices[0].message["content"]
35
-
36
- # Function to query Together (DeepSeek)
37
- def query_deepseek(user_input):
38
- messages = [{"role": "user", "content": user_input}]
39
- completion = together_client.chat.completions.create(
40
- model="deepseek-ai/DeepSeek-V3",
41
- messages=messages,
42
- max_tokens=500
43
- )
44
- return completion.choices[0].message["content"]
45
-
46
- # Function to refine responses using DeepSeek-V3
 
 
 
 
47
  def refine_response(user_input):
48
  try:
49
- # Get responses
50
- gemma_response = query_gemma(user_input)
51
- llama_response = query_llama(user_input)
52
- deepseek_response = query_deepseek(user_input)
 
 
 
 
 
 
 
 
 
 
 
53
 
54
  # Prepare refinement prompt
55
  improvement_prompt = f"""
56
  Here are three AI-generated responses:
57
 
58
  Response 1 (Gemma): {gemma_response}
59
- Response 2 (Llama 3.3): {llama_response}
60
- Response 3 (DeepSeek-V3): {deepseek_response}
61
 
62
- Please combine the best elements of all three and provide an improved answer.
63
  """
64
 
65
- messages = [{"role": "user", "content": improvement_prompt}]
66
- refined_completion = together_client.chat.completions.create(
67
- model="deepseek-ai/DeepSeek-V3",
68
- messages=messages,
69
- max_tokens=500
70
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
- return refined_completion.choices[0].message["content"]
73
 
74
  except Exception as e:
75
  return f"Error refining response: {str(e)}"
@@ -80,7 +111,7 @@ iface = gr.Interface(
80
  inputs=gr.Textbox(lines=2, placeholder="Ask me anything..."),
81
  outputs="text",
82
  title="Multi-Model AI Enhancer",
83
- description="Get responses from Gemma, Llama, and DeepSeek. Then receive an improved answer."
84
  )
85
 
86
  # Launch app
 
1
  import os
2
  import time
3
+ import json
4
  import gradio as gr
5
+ from openai import OpenAI
6
  from dotenv import load_dotenv
7
 
8
  # Load API keys from .env file
9
  load_dotenv()
10
+ OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY") # OpenRouter API Key
11
+
12
+ # Initialize OpenRouter Client
13
+ openrouter_client = OpenAI(
14
+ base_url="https://openrouter.ai/api/v1",
15
+ api_key=OPENROUTER_API_KEY
16
+ )
17
+
18
+ # Query OpenRouter (Gemma-2-9B)
19
+ def query_gemma_openrouter(user_input):
20
+ try:
21
+ completion = openrouter_client.chat.completions.create(
22
+ model="google/gemma-2-9b-it:free",
23
+ messages=[{"role": "user", "content": user_input}]
24
+ )
25
+ return completion.choices[0].message.content
26
+ except Exception as e:
27
+ return f"Error querying Gemma-2-9B: {str(e)}"
28
+
29
+ # Query OpenRouter (Llama-3.2-3B)
30
+ def query_llama_openrouter(user_input):
31
+ try:
32
+ completion = openrouter_client.chat.completions.create(
33
+ model="meta-llama/llama-3.2-3b-instruct:free",
34
+ messages=[{"role": "user", "content": user_input}]
35
+ )
36
+ return completion.choices[0].message.content
37
+ except Exception as e:
38
+ return f"Error querying Llama-3.2-3B: {str(e)}"
39
+
40
+ # Query OpenRouter (DeepSeek-R1)
41
+ def query_deepseek_openrouter(user_input):
42
+ try:
43
+ completion = openrouter_client.chat.completions.create(
44
+ model="deepseek/deepseek-r1:free",
45
+ messages=[{"role": "user", "content": user_input}]
46
+ )
47
+ return completion.choices[0].message.content
48
+ except Exception as e:
49
+ return f"Error querying DeepSeek-R1: {str(e)}"
50
+
51
+ # Function to refine responses using DeepSeek-R1
52
  def refine_response(user_input):
53
  try:
54
+ # Get responses from all three models
55
+ gemma_response = query_gemma_openrouter(user_input)
56
+ llama_response = query_llama_openrouter(user_input)
57
+ deepseek_response = query_deepseek_openrouter(user_input)
58
+
59
+ # If any response is missing, return the available ones
60
+ responses = {
61
+ "Gemma": gemma_response.strip(),
62
+ "Llama": llama_response.strip(),
63
+ "DeepSeek-R1": deepseek_response.strip()
64
+ }
65
+ valid_responses = {k: v for k, v in responses.items() if v}
66
+
67
+ if len(valid_responses) < 2:
68
+ return "\n\n".join(f"{k} Response: {v}" for k, v in valid_responses.items())
69
 
70
  # Prepare refinement prompt
71
  improvement_prompt = f"""
72
  Here are three AI-generated responses:
73
 
74
  Response 1 (Gemma): {gemma_response}
75
+ Response 2 (Llama 3.2): {llama_response}
76
+ Response 3 (DeepSeek-R1): {deepseek_response}
77
 
78
+ Please combine the best elements of all three, improve clarity, and provide a final refined answer.
79
  """
80
 
81
+ # Retry loop for DeepSeek-R1 refinement
82
+ max_retries = 3
83
+ for attempt in range(max_retries):
84
+ try:
85
+ messages = [{"role": "user", "content": improvement_prompt}]
86
+ refined_completion = openrouter_client.chat.completions.create(
87
+ model="deepseek/deepseek-r1:free",
88
+ messages=messages
89
+ )
90
+
91
+ refined_content = refined_completion.choices[0].message.content
92
+
93
+ if refined_content.strip():
94
+ return refined_content
95
+ else:
96
+ print("Received empty response from DeepSeek-R1, retrying...")
97
+ time.sleep(2)
98
+
99
+ except Exception as e:
100
+ print(f"Error on attempt {attempt + 1}: {str(e)}")
101
+ time.sleep(2)
102
 
103
+ return f"Refinement failed. Here’s the best available response:\n\n{max(valid_responses.values(), key=len)}"
104
 
105
  except Exception as e:
106
  return f"Error refining response: {str(e)}"
 
111
  inputs=gr.Textbox(lines=2, placeholder="Ask me anything..."),
112
  outputs="text",
113
  title="Multi-Model AI Enhancer",
114
+ description="Get responses from Gemma, Llama-3.2, and DeepSeek-R1. Then receive an improved final answer."
115
  )
116
 
117
  # Launch app