Synthetic_Biology / genesis /providers.py
mgbam's picture
Update genesis/providers.py
75cfd1d verified
raw
history blame
2.38 kB
# genesis/providers.py
"""
API Providers for GENESIS-AI
Handles calls to DeepSeek, Gemini, OpenAI, and PubMed.
"""
import os
import requests
# ENV
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
NCBI_API_KEY = os.getenv("NCBI_API_KEY")
NCBI_EMAIL = os.getenv("NCBI_EMAIL")
def run_deepseek_summary(prompt):
"""Summarize using DeepSeek API."""
try:
r = requests.post(
"https://api.deepseek.com/v1/chat/completions",
headers={"Authorization": f"Bearer {DEEPSEEK_API_KEY}"},
json={"model": "deepseek-chat", "messages": [{"role": "user", "content": prompt}]}
)
r.raise_for_status()
return r.json()["choices"][0]["message"]["content"]
except Exception as e:
return f"[DeepSeek Error] {e}"
def run_gemini_polish(text):
"""Polish text with Gemini."""
try:
r = requests.post(
f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={GEMINI_API_KEY}",
json={"contents": [{"parts": [{"text": text}]}]}
)
r.raise_for_status()
return r.json()["candidates"][0]["content"]["parts"][0]["text"]
except Exception as e:
return f"[Gemini Error] {e}"
def run_openai_image(prompt):
"""Generate image with OpenAI DALL·E or fallback."""
try:
r = requests.post(
"https://api.openai.com/v1/images/generations",
headers={"Authorization": f"Bearer {OPENAI_API_KEY}"},
json={"model": "gpt-image-1", "prompt": prompt, "size": "1024x1024"}
)
r.raise_for_status()
return r.json()["data"][0]["url"]
except Exception as e:
return f"[OpenAI Image Error] {e}"
def pubmed_fallback_search(query, retmax=5):
"""Simple PubMed search for citations."""
try:
url = f"https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi"
params = {"db": "pubmed", "term": query, "retmode": "json", "retmax": retmax, "api_key": NCBI_API_KEY}
r = requests.get(url, params=params)
r.raise_for_status()
ids = r.json()["esearchresult"]["idlist"]
return [{"pmid": pid, "url": f"https://pubmed.ncbi.nlm.nih.gov/{pid}/"} for pid in ids]
except Exception as e:
return [{"error": str(e)}]