Fixed issue with Gemini API
This commit is contained in:
42
alwrity.py
42
alwrity.py
@@ -174,45 +174,33 @@ def check_llm_environs():
|
|||||||
load_dotenv(Path('.env'))
|
load_dotenv(Path('.env'))
|
||||||
# Check if GPT_PROVIDER is defined in .env file
|
# Check if GPT_PROVIDER is defined in .env file
|
||||||
gpt_provider = os.getenv("GPT_PROVIDER")
|
gpt_provider = os.getenv("GPT_PROVIDER")
|
||||||
|
|
||||||
# Disable unsupported GPT providers
|
# Disable unsupported GPT providers
|
||||||
supported_providers = ['google', 'openai', 'mistralai']
|
supported_providers = ['google', 'openai', 'mistralai']
|
||||||
if gpt_provider is None or gpt_provider not in supported_providers:
|
if gpt_provider is None or gpt_provider.lower() not in map(str.lower, supported_providers):
|
||||||
# Prompt user to select a provider
|
# Prompt user to select a provider
|
||||||
selected_provider = radiolist_dialog(
|
selected_provider = radiolistbox(
|
||||||
title='Select your preferred GPT provider:',
|
msg='Select your preferred GPT provider:',
|
||||||
text="Please choose GPT provider Below:\n👺Google Gemini recommended, its 🆓.",
|
title='GPT Provider Selection',
|
||||||
values=[
|
choices=["Google", "OpenAI", "MistralAI/WIP", "Ollama (TBD)"],
|
||||||
("Google", "Google"),
|
default_choice="Google"
|
||||||
("OpenAI", "OpenAI"),
|
)
|
||||||
("MistralAI/WIP", "mistralai/WIP"),
|
|
||||||
("Ollama", "Ollama (TBD)")
|
|
||||||
]
|
|
||||||
).run()
|
|
||||||
gpt_provider = selected_provider
|
gpt_provider = selected_provider
|
||||||
# Update .env file
|
# Update .env file
|
||||||
os.environ["GPT_PROVIDER"] = gpt_provider
|
os.environ["GPT_PROVIDER"] = gpt_provider
|
||||||
|
|
||||||
if gpt_provider == "Google":
|
if gpt_provider.lower() == "google":
|
||||||
api_key_var = "GEMINI_API_KEY"
|
api_key_var = "GEMINI_API_KEY"
|
||||||
missing_api_msg = f"To get your {api_key_var}, please visit: https://aistudio.google.com/app/apikey"
|
missing_api_msg = f"To get your {api_key_var}, please visit: https://aistudio.google.com/app/apikey"
|
||||||
elif gpt_provider == "OpenAI":
|
elif gpt_provider.lower() == "openai":
|
||||||
api_key_var = "OPENAI_API_KEY"
|
api_key_var = "OPENAI_API_KEY"
|
||||||
missing_api_msg = "To get your OpenAI API key, please visit: https://openai.com/blog/openai-api"
|
missing_api_msg = "To get your OpenAI API key, please visit: https://openai.com/blog/openai-api"
|
||||||
elif gpt_provider == "mistralai":
|
elif gpt_provider.lower() == "mistralai":
|
||||||
api_key_var = "MISTRAL_API_KEY"
|
api_key_var = "MISTRAL_API_KEY"
|
||||||
missing_api_msg = "To get your MistralAI API key, please visit: https://mistralai.com/api"
|
missing_api_msg = "To get your MistralAI API key, please visit: https://mistralai.com/api"
|
||||||
|
else:
|
||||||
if os.getenv(api_key_var) is None:
|
print("Unrecognised/Unsupported GPT provider. Check your main_config and environs.")
|
||||||
# Ask for the API key
|
exit(1)
|
||||||
print(f"🚫The {api_key_var} is missing. {missing_api_msg}")
|
|
||||||
api_key = typer.prompt(f"\n🙆🙆Please enter {api_key_var} API Key:")
|
|
||||||
|
|
||||||
# Update .env file
|
|
||||||
with open(".env", "a", encoding="utf-8") as env_file:
|
|
||||||
env_file.write(f"{api_key_var}={api_key}\n")
|
|
||||||
env_file.write(f"GPT_PROVIDER={gpt_provider}\n")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def check_internet():
|
def check_internet():
|
||||||
|
|||||||
BIN
lib/gpt_providers/text_generation/.gemini_pro_text.py.swp
Normal file
BIN
lib/gpt_providers/text_generation/.gemini_pro_text.py.swp
Normal file
Binary file not shown.
@@ -4,7 +4,6 @@ import sys
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import google.generativeai as genai
|
import google.generativeai as genai
|
||||||
from google.api_core import retry
|
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
load_dotenv(Path('../../../.env'))
|
load_dotenv(Path('../../../.env'))
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
@@ -13,8 +12,14 @@ logger.add(sys.stdout,
|
|||||||
colorize=True,
|
colorize=True,
|
||||||
format="<level>{level}</level>|<green>{file}:{line}:{function}</green>| {message}"
|
format="<level>{level}</level>|<green>{file}:{line}:{function}</green>| {message}"
|
||||||
)
|
)
|
||||||
|
from tenacity import (
|
||||||
|
retry,
|
||||||
|
stop_after_attempt,
|
||||||
|
wait_random_exponential,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
#@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
|
||||||
def gemini_text_response(prompt, temperature, top_p, n, max_tokens):
|
def gemini_text_response(prompt, temperature, top_p, n, max_tokens):
|
||||||
""" Common functiont to get response from gemini pro Text. """
|
""" Common functiont to get response from gemini pro Text. """
|
||||||
#FIXME: Include : https://github.com/google-gemini/cookbook/blob/main/quickstarts/rest/System_instructions_REST.ipynb
|
#FIXME: Include : https://github.com/google-gemini/cookbook/blob/main/quickstarts/rest/System_instructions_REST.ipynb
|
||||||
@@ -28,17 +33,19 @@ def gemini_text_response(prompt, temperature, top_p, n, max_tokens):
|
|||||||
"temperature": temperature,
|
"temperature": temperature,
|
||||||
"top_p": top_p,
|
"top_p": top_p,
|
||||||
"top_k": n,
|
"top_k": n,
|
||||||
"max_output_tokens": max_tokens
|
"max_output_tokens": max_tokens,
|
||||||
}
|
}
|
||||||
# FIXME: Expose model_name in main_config
|
# FIXME: Expose model_name in main_config
|
||||||
model = genai.GenerativeModel(model_name="gemini-1.0-pro", generation_config=generation_config)
|
model = genai.GenerativeModel(model_name="gemini-pro", generation_config=generation_config)
|
||||||
try:
|
try:
|
||||||
# text_response = []
|
# text_response = []
|
||||||
response = model.generate_content(prompt, stream=True, request_options={'retry':retry.Retry()})
|
response = model.generate_content(prompt, stream=True)
|
||||||
for chunk in response:
|
if response:
|
||||||
# text_response.append(chunk.text)
|
for chunk in response:
|
||||||
print(chunk.text)
|
# text_response.append(chunk.text)
|
||||||
|
print(chunk.text)
|
||||||
|
else:
|
||||||
|
print(response)
|
||||||
return response.text
|
return response.text
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
logger.error(response)
|
|
||||||
logger.error(f"Failed to get response from Gemini: {err}. Retrying.")
|
logger.error(f"Failed to get response from Gemini: {err}. Retrying.")
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ def competitor_analysis():
|
|||||||
text += "Read More Here: https://docs.exa.ai/reference/company-analyst \n"
|
text += "Read More Here: https://docs.exa.ai/reference/company-analyst \n"
|
||||||
text += "_______________________________________________________________________\n"
|
text += "_______________________________________________________________________\n"
|
||||||
print(text)
|
print(text)
|
||||||
similar_url = prompt("Enter Valid URL to get web analysis:: ")
|
similar_url = prompt("⚠️ 👋 Enter a single Valid URL for web analysis:: ")
|
||||||
try:
|
try:
|
||||||
metaphor_find_similar(similar_url)
|
metaphor_find_similar(similar_url)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
|
|||||||
Reference in New Issue
Block a user