Gemini.py 1.4 KB
import os
import google.generativeai as genai


def configure_api(api_key, proxy_url=None):
    os.environ['https_proxy'] = proxy_url if proxy_url else None
    os.environ['http_proxy'] = proxy_url if proxy_url else None
    genai.configure(api_key=api_key)
    
    
class Gemini:
    def __init__(self, model_path='gemini-pro', api_key=None, proxy=None):
        configure_api(api_key, proxy)
        safety_settings = [
            {
                "category": "HARM_CATEGORY_HARASSMENT",
                "threshold": "BLOCK_MEDIUM_AND_ABOVE"
            },
            {
                "category": "HARM_CATEGORY_HATE_SPEECH",
                "threshold": "BLOCK_MEDIUM_AND_ABOVE"
            },
            {
                "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
                "threshold": "BLOCK_MEDIUM_AND_ABOVE"
            },
            {
                "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
                "threshold": "BLOCK_MEDIUM_AND_ABOVE"
            },
        ]

        self.model = genai.GenerativeModel(model_path, safety_settings=safety_settings)
        
    def chat(self, message):
        times = 0
        while True:
            try:
                response = self.model.generate_content(message)
                return response.text
            except:
                times += 1
                if times > 5:
                    raise Exception('Failed to generate text.')