diff --git a/alwrity.py b/alwrity.py
index 97ee354c..462e403f 100644
--- a/alwrity.py
+++ b/alwrity.py
@@ -174,45 +174,33 @@ def check_llm_environs():
load_dotenv(Path('.env'))
# Check if GPT_PROVIDER is defined in .env file
gpt_provider = os.getenv("GPT_PROVIDER")
-
+
# Disable unsupported GPT providers
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
- selected_provider = radiolist_dialog(
- title='Select your preferred GPT provider:',
- text="Please choose GPT provider Below:\n👺Google Gemini recommended, its 🆓.",
- values=[
- ("Google", "Google"),
- ("OpenAI", "OpenAI"),
- ("MistralAI/WIP", "mistralai/WIP"),
- ("Ollama", "Ollama (TBD)")
- ]
- ).run()
+ selected_provider = radiolistbox(
+ msg='Select your preferred GPT provider:',
+ title='GPT Provider Selection',
+ choices=["Google", "OpenAI", "MistralAI/WIP", "Ollama (TBD)"],
+ default_choice="Google"
+ )
gpt_provider = selected_provider
# Update .env file
os.environ["GPT_PROVIDER"] = gpt_provider
-
- if gpt_provider == "Google":
+
+ if gpt_provider.lower() == "google":
api_key_var = "GEMINI_API_KEY"
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"
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"
missing_api_msg = "To get your MistralAI API key, please visit: https://mistralai.com/api"
-
- if os.getenv(api_key_var) is None:
- # Ask for the API key
- 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")
-
+ else:
+ print("Unrecognised/Unsupported GPT provider. Check your main_config and environs.")
+ exit(1)
def check_internet():
diff --git a/lib/gpt_providers/text_generation/.gemini_pro_text.py.swp b/lib/gpt_providers/text_generation/.gemini_pro_text.py.swp
new file mode 100644
index 00000000..a62ca028
Binary files /dev/null and b/lib/gpt_providers/text_generation/.gemini_pro_text.py.swp differ
diff --git a/lib/gpt_providers/text_generation/gemini_pro_text.py b/lib/gpt_providers/text_generation/gemini_pro_text.py
index 0e90b5f6..8e158de6 100644
--- a/lib/gpt_providers/text_generation/gemini_pro_text.py
+++ b/lib/gpt_providers/text_generation/gemini_pro_text.py
@@ -4,7 +4,6 @@ import sys
from pathlib import Path
import google.generativeai as genai
-from google.api_core import retry
from dotenv import load_dotenv
load_dotenv(Path('../../../.env'))
from loguru import logger
@@ -13,8 +12,14 @@ logger.add(sys.stdout,
colorize=True,
format="{level}|{file}:{line}:{function}| {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):
""" 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
@@ -28,17 +33,19 @@ def gemini_text_response(prompt, temperature, top_p, n, max_tokens):
"temperature": temperature,
"top_p": top_p,
"top_k": n,
- "max_output_tokens": max_tokens
+ "max_output_tokens": max_tokens,
}
# 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:
# text_response = []
- response = model.generate_content(prompt, stream=True, request_options={'retry':retry.Retry()})
- for chunk in response:
- # text_response.append(chunk.text)
- print(chunk.text)
+ response = model.generate_content(prompt, stream=True)
+ if response:
+ for chunk in response:
+ # text_response.append(chunk.text)
+ print(chunk.text)
+ else:
+ print(response)
return response.text
except Exception as err:
- logger.error(response)
logger.error(f"Failed to get response from Gemini: {err}. Retrying.")
diff --git a/lib/utils/alwrity_utils.py b/lib/utils/alwrity_utils.py
index edf50ba5..d2086832 100644
--- a/lib/utils/alwrity_utils.py
+++ b/lib/utils/alwrity_utils.py
@@ -268,7 +268,7 @@ def competitor_analysis():
text += "Read More Here: https://docs.exa.ai/reference/company-analyst \n"
text += "_______________________________________________________________________\n"
print(text)
- similar_url = prompt("Enter Valid URL to get web analysis:: ")
+ similar_url = prompt("⚠️ 👋 Enter a single Valid URL for web analysis:: ")
try:
metaphor_find_similar(similar_url)
except Exception as err: