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