mgbam commited on
Commit
b143edd
·
verified ·
1 Parent(s): 0f230a9

Update genesis/providers.py

Browse files
Files changed (1) hide show
  1. genesis/providers.py +27 -16
genesis/providers.py CHANGED
@@ -2,19 +2,27 @@
2
  import os
3
  import requests
4
  from typing import List, Dict
 
5
 
 
6
  OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
7
- HF_TOKEN = os.getenv("HF_TOKEN")
8
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
9
  NCBI_API_KEY = os.getenv("NCBI_API_KEY")
10
  NCBI_EMAIL = os.getenv("NCBI_EMAIL")
 
 
 
11
 
12
  # -------- DeepSeek Summary --------
13
  def run_deepseek_summary(prompt: str) -> str:
14
  """Run a dense scientific summary using DeepSeek API."""
 
 
 
15
  try:
16
- url = "https://api.deepseek.com/v1/chat/completions" # Example endpoint
17
- headers = {"Authorization": f"Bearer {HF_TOKEN}", "Content-Type": "application/json"}
18
  payload = {
19
  "model": "deepseek-science",
20
  "messages": [{"role": "user", "content": prompt}],
@@ -26,7 +34,7 @@ def run_deepseek_summary(prompt: str) -> str:
26
  return data["choices"][0]["message"]["content"]
27
  except Exception as e:
28
  print(f"[DeepSeek] Failed: {e}")
29
- return prompt # fallback: return prompt
30
 
31
  # -------- Gemini Polish --------
32
  def run_gemini_polish(text: str) -> str:
@@ -35,7 +43,9 @@ def run_gemini_polish(text: str) -> str:
35
  return text
36
  try:
37
  url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={GEMINI_API_KEY}"
38
- payload = {"contents": [{"parts": [{"text": f"Polish and clarify this research report:\n\n{text}"}]}]}
 
 
39
  r = requests.post(url, json=payload, timeout=30)
40
  r.raise_for_status()
41
  data = r.json()
@@ -44,20 +54,21 @@ def run_gemini_polish(text: str) -> str:
44
  print(f"[Gemini] Failed: {e}")
45
  return text
46
 
47
- # -------- Gemini Image --------
48
- def run_gemini_image(query: str) -> str:
49
- """Generate a research diagram using Gemini Vision/Image."""
50
- if not GEMINI_API_KEY:
 
51
  return None
52
  try:
53
- url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateImage?key={GEMINI_API_KEY}"
54
- payload = {"prompt": f"Generate a detailed scientific diagram about: {query}"}
55
- r = requests.post(url, json=payload, timeout=30)
56
- r.raise_for_status()
57
- data = r.json()
58
- return data.get("image_url") or ""
59
  except Exception as e:
60
- print(f"[Gemini Image] Failed: {e}")
61
  return None
62
 
63
  # -------- PubMed Fallback --------
 
2
  import os
3
  import requests
4
  from typing import List, Dict
5
+ from openai import OpenAI
6
 
7
+ # Load API keys
8
  OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
9
+ HF_TOKEN = os.getenv("HF_TOKEN") # Still used for Hugging Face models if needed
10
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
11
  NCBI_API_KEY = os.getenv("NCBI_API_KEY")
12
  NCBI_EMAIL = os.getenv("NCBI_EMAIL")
13
+ DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
14
+
15
+ client = OpenAI(api_key=OPENAI_API_KEY)
16
 
17
  # -------- DeepSeek Summary --------
18
  def run_deepseek_summary(prompt: str) -> str:
19
  """Run a dense scientific summary using DeepSeek API."""
20
+ if not DEEPSEEK_API_KEY:
21
+ print("[DeepSeek] API key not set, skipping.")
22
+ return prompt
23
  try:
24
+ url = "https://api.deepseek.com/v1/chat/completions"
25
+ headers = {"Authorization": f"Bearer {DEEPSEEK_API_KEY}", "Content-Type": "application/json"}
26
  payload = {
27
  "model": "deepseek-science",
28
  "messages": [{"role": "user", "content": prompt}],
 
34
  return data["choices"][0]["message"]["content"]
35
  except Exception as e:
36
  print(f"[DeepSeek] Failed: {e}")
37
+ return prompt # fallback
38
 
39
  # -------- Gemini Polish --------
40
  def run_gemini_polish(text: str) -> str:
 
43
  return text
44
  try:
45
  url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={GEMINI_API_KEY}"
46
+ payload = {
47
+ "contents": [{"parts": [{"text": f"Polish and clarify this research report for scientists:\n\n{text}"}]}]
48
+ }
49
  r = requests.post(url, json=payload, timeout=30)
50
  r.raise_for_status()
51
  data = r.json()
 
54
  print(f"[Gemini] Failed: {e}")
55
  return text
56
 
57
+ # -------- OpenAI Image Generation (DALL·E) --------
58
+ def run_openai_image(query: str) -> str:
59
+ """Generate a research diagram using OpenAI DALL·E (gpt-image-1)."""
60
+ if not OPENAI_API_KEY:
61
+ print("[OpenAI Image] API key not set.")
62
  return None
63
  try:
64
+ resp = client.images.generate(
65
+ model="gpt-image-1",
66
+ prompt=f"Detailed, realistic scientific diagram about: {query}",
67
+ size="1024x1024"
68
+ )
69
+ return resp.data[0].url
70
  except Exception as e:
71
+ print(f"[OpenAI Image] Failed: {e}")
72
  return None
73
 
74
  # -------- PubMed Fallback --------