Spaces:
Sleeping
Sleeping
File size: 3,114 Bytes
97ec060 e995e3b 487bfb7 97ec060 e995e3b 75cfd1d 97ec060 9932b48 97ec060 9932b48 97ec060 9932b48 97ec060 afd6eb2 97ec060 9932b48 97ec060 afd6eb2 97ec060 afd6eb2 97ec060 9932b48 97ec060 487bfb7 97ec060 17cd8b9 97ec060 9932b48 |
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 |
# genesis/providers.py
import os
import requests
from genesis.api_clients.pubmed_api import search_pubmed
from genesis.api_clients.chembl_api import search_chembl
from genesis.api_clients.bioportal_api import search_bioportal
from genesis.api_clients.umls_api import search_umls
from genesis.api_clients.ncbi_api import search_ncbi
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
CLAUDE_API_KEY = os.getenv("CLAUDE_API_KEY")
HUGGINGFACE_API_KEY = os.getenv("HUGGINGFACE_API_KEY")
# ---------- LITERATURE ----------
def run_pubmed_literature(query: str, max_results: int = 10):
"""Fetch literature from PubMed."""
return search_pubmed(query, max_results=max_results)
# ---------- DEEPSEEK ----------
def run_deepseek_summary(prompt: str):
"""Summarize content using DeepSeek API."""
try:
url = "https://api.deepseek.com/v1/chat/completions"
headers = {"Authorization": f"Bearer {DEEPSEEK_API_KEY}"}
data = {"model": "deepseek-chat", "messages": [{"role": "user", "content": prompt}]}
r = requests.post(url, headers=headers, json=data)
r.raise_for_status()
return r.json()["choices"][0]["message"]["content"]
except Exception as e:
print(f"[DeepSeek] Failed: {e}")
return None
# ---------- GEMINI ----------
def run_gemini_polish(text: str):
"""Polish text using Gemini."""
try:
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={GEMINI_API_KEY}"
headers = {"Content-Type": "application/json"}
payload = {"contents": [{"parts": [{"text": text}]}]}
r = requests.post(url, headers=headers, json=payload)
r.raise_for_status()
return r.json()["candidates"][0]["content"]["parts"][0]["text"]
except Exception as e:
print(f"[Gemini] Failed: {e}")
return text
# ---------- GEMINI IMAGE (Fallback to OpenAI, then HuggingFace) ----------
def run_image_generation(prompt: str):
"""Generate image using Gemini > OpenAI > Hugging Face fallback."""
# Try Gemini first
try:
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateImage?key={GEMINI_API_KEY}"
r = requests.post(url, json={"prompt": prompt})
r.raise_for_status()
return r.json().get("image_url")
except:
pass
# Try OpenAI
try:
import openai
openai.api_key = OPENAI_API_KEY
result = openai.Image.create(model="gpt-image-1", prompt=prompt, size="1024x1024")
return result["data"][0]["url"]
except:
pass
# Try Hugging Face
try:
hf_url = "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-2"
headers = {"Authorization": f"Bearer {HUGGINGFACE_API_KEY}"}
r = requests.post(hf_url, headers=headers, json={"inputs": prompt})
r.raise_for_status()
return r.json()
except Exception as e:
print(f"[Image Generation] Failed: {e}")
return None
|