Spaces:
Sleeping
Sleeping
File size: 2,223 Bytes
1a02dac |
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 |
import os
from dotenv import load_dotenv
load_dotenv()
import os
import google.generativeai as genai
from dotenv import load_dotenv
import logging
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
class GeminiIntegration:
"""Handles interaction with Google's Gemini API"""
def __init__(self, model_name: str = "gemini-2.0-flash", embedding_model: str = "text-embedding-004"):
self.model_name = model_name
self.embedding_model = embedding_model
self._configure_gemini()
def _configure_gemini(self):
"""Configure Gemini API client"""
try:
api_key = os.getenv("GEMINI_API_KEY")
if not api_key:
raise ValueError("GEMINI_API_KEY not found in environment variables")
genai.configure(api_key=api_key)
logger.info("Gemini API configured successfully.")
except Exception as e:
logger.error(f"Failed to configure Gemini: {str(e)}")
raise
def generate_response(self, query: str, context: str = "") -> str:
"""Generate a response from Gemini given a query and optional context"""
try:
prompt = f"Context: {context}\n\nQuestion: {query}"
# prompt checking
print("Prompt checking: ")
print(prompt)
response = genai.GenerativeModel(self.model_name).generate_content(prompt)
return response.text
except Exception as e:
logger.error(f"Response generation failed: {str(e)}")
raise
def embed_text(self, text: str):
"""Generate text embeddings using Gemini"""
try:
response = genai.embed_content(
model=self.embedding_model,
content=text,
task_type="retrieval_query"
)
return response['embedding']
except Exception as e:
logger.error(f"Embedding generation failed: {str(e)}")
raise
# example usage
gem = GeminiIntegration()
# response = gem.generate_response(query="Tell me about apple cultivation?")
# print(response)
print("Gemini Integeration working! ")
|