mgbam commited on
Commit
d6c76ba
·
verified ·
1 Parent(s): f94ca0e

Update orchestrator/gemini.py

Browse files
Files changed (1) hide show
  1. orchestrator/gemini.py +39 -11
orchestrator/gemini.py CHANGED
@@ -1,30 +1,58 @@
1
  import os
2
  import streamlit as st
 
 
3
  try:
4
  import google.generativeai as genai
5
  except ImportError:
6
  genai = None
7
 
8
  def get_gemini_api_key():
 
 
 
 
9
  if hasattr(st.secrets, "GEMINI_API_KEY"):
10
  return st.secrets["GEMINI_API_KEY"]
 
11
  return os.getenv("GEMINI_API_KEY")
12
 
13
- def gemini_generate_code(prompt, model="gemini-1.5-pro"):
 
 
 
 
 
 
 
 
 
 
14
  api_key = get_gemini_api_key()
15
  if not api_key:
16
- raise RuntimeError("Gemini API key not set!")
17
- if genai is None:
18
- raise ImportError("Please install google-generativeai!")
19
  genai.configure(api_key=api_key)
20
  model_obj = genai.GenerativeModel(model)
21
  response = model_obj.generate_content(prompt)
 
22
  return response.text if hasattr(response, "text") else str(response)
23
 
24
- def gemini_explain_code(code, model="gemini-1.5-pro"):
25
- # Ask Gemini to explain code in plain English
26
- explanation_prompt = (
27
- "Explain step-by-step, in clear language, what this Python MCP server code does, and draw a high-level block diagram in Mermaid format:\n\n" +
28
- code
29
- )
30
- return gemini_generate_code(explanation_prompt, model)
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import os
2
  import streamlit as st
3
+
4
+ # Try to import the Gemini client
5
  try:
6
  import google.generativeai as genai
7
  except ImportError:
8
  genai = None
9
 
10
  def get_gemini_api_key():
11
+ """
12
+ Return Gemini API key from Streamlit secrets or environment variable.
13
+ """
14
+ # Try Streamlit Secrets (recommended on Spaces)
15
  if hasattr(st.secrets, "GEMINI_API_KEY"):
16
  return st.secrets["GEMINI_API_KEY"]
17
+ # Fallback to environment variable
18
  return os.getenv("GEMINI_API_KEY")
19
 
20
+ def ensure_genai():
21
+ if genai is None:
22
+ raise ImportError(
23
+ "google-generativeai is not installed. Please add it to requirements.txt and re-deploy."
24
+ )
25
+
26
+ def gemini_generate(prompt, model="gemini-1.5-pro"):
27
+ """
28
+ Simple Gemini text completion for Q&A or summarization.
29
+ """
30
+ ensure_genai()
31
  api_key = get_gemini_api_key()
32
  if not api_key:
33
+ raise RuntimeError("Gemini API key not set in Streamlit secrets or environment variable.")
 
 
34
  genai.configure(api_key=api_key)
35
  model_obj = genai.GenerativeModel(model)
36
  response = model_obj.generate_content(prompt)
37
+ # Try to return the 'text' property (for Gemini's Python client), fallback to string
38
  return response.text if hasattr(response, "text") else str(response)
39
 
40
+ def gemini_generate_code(system_instruction, user_prompt, model="gemini-1.5-pro"):
41
+ """
42
+ Use Gemini for code generation with a system prompt and a user prompt.
43
+ Returns: generated code as string.
44
+ """
45
+ ensure_genai()
46
+ api_key = get_gemini_api_key()
47
+ if not api_key:
48
+ raise RuntimeError("Gemini API key not set in Streamlit secrets or environment variable.")
49
+ genai.configure(api_key=api_key)
50
+ model_obj = genai.GenerativeModel(model)
51
+ # Compose prompt as role-annotated list for best model behavior
52
+ prompt = [
53
+ {"role": "system", "parts": [system_instruction]},
54
+ {"role": "user", "parts": [user_prompt]},
55
+ ]
56
+ response = model_obj.generate_content(prompt)
57
+ # Try to return the 'text' property (for Gemini's Python client), fallback to string
58
+ return response.text if hasattr(response, "text") else str(response)