Skip to content

The GenericSuite AI for Python

GenericSuite AI (backend version) is a versatile backend solution, designed to provide a comprehensive suite of features, tools and functionalities for AI oriented Python APIs.

It's bassed on The Generic Suite (backend version).

The perfect companion for this backend solution is The GenericSuite AI (frontend version)

Pre-requisites

AWS account and credentials

Installation

First check the Getting Started section in the GenericSuite backend version documentation.

To use GenericSuite AI in your project, install it with the following command(s):

From PyPi

Pip

pip install genericsuite genericsuite-ai

Pipenv

pipenv install genericsuite genericsuite-ai

Poetry

poetry add genericsuite genericsuite-ai

NOTE: in the following instructions we'll only show pip install ....
If you'll use Pipenv, change it with pipenv install ....
If you'll use Poetry, change it with poetry add ....

From Git or Local Directory

Check this documentation to install from a Git repository/branch or a Local Directory.

Test dependencies

To execute the unit and integration test, install pytest and coverage:

pip install pytest coverage

Development scripts installation

The GenericSuite backend development scripts contains utilities to build and deploy APIs made by The GenericSuite.

npm install -D genericsuite-be-scripts

Features

  • ai_chatbot endpoint to implement NLP conversations based on OpenAI or Langchain APIs.
  • OpenAPI, Google Gemini, Anthropic, Ollama, and Hugging Face models handling.
  • Clarifai models and embeddings handling.
  • Computer vision (OpenAPI GPT4 Vision, Google Gemini Vision, Clarifai Vision).
  • Speech-to-text processing (OpenAPI Whisper, Clarifai Audio Models).
  • Text-to-speech (OpenAI TTS-1, Clarifai Audio Models).
  • Image generator (OpenAI DALL-E 3, Google Gemini Image, Clarifai Image Models).
  • Vector indexers (FAISS, Chroma, Clarifai, Vectara, Weaviate, MongoDBAtlasVectorSearch)
  • Embedders (OpenAI, Hugging Face, Clarifai, Bedrock, Cohere, Ollama)
  • Web search tool.
  • Webpage scrapping and analyzing tool.
  • JSON, PDF, Git and Youtube readers.
  • Language translation tools.
  • Chats stored in the Database.
  • Plan attribute, OpenAi API key and model name in the user profile, to allow free plan users to use Models at their own expenses.

Configuration

Configure your application by setting up the necessary environment variables. Refer to the .env.example and config.py files for the available options.

Please check the GenericSuite backend version configuration section for more details about general environment variables.

For GenericSuite AI, there are these additional environment variables:

  • Chabot configuration
# Aplicacion AI assistant name
AI_ASSISTANT_NAME=ExampleBot
GOOGLE_API_KEY=google_console_api_key

https://programmablesearchengine.google.com/

GOOGLE_CSE_ID=google_console_cse_key
OPENAI_API_KEY=openai_api_key
OPENAI_MODEL=gpt-4o-mini
OPENAI_TEMPERATURE=0.7
LANGCHAIN_API_KEY=langchain_api_key
LANGCHAIN_PROJECT=langchain_project
HUGGINGFACE_API_KEY=huggingface_api_key
  • Hugging Face chat model
HUGGINGFACE_DEFAULT_CHAT_MODEL=huggingface_default_chat_model

# Tested models:
# HUGGINGFACE_DEFAULT_CHAT_MODEL=mistralai/Mistral-7B-Instruct-v0.2
# HUGGINGFACE_DEFAULT_CHAT_MODEL=meta-llama/Meta-Llama-3.1-8B-Instruct
# HUGGINGFACE_DEFAULT_CHAT_MODEL=meta-llama/Llama-2-7b-chat-hf

# NOTE: Big models work with huggingface_pipeline only
# HUGGINGFACE_DEFAULT_CHAT_MODEL=meta-llama/Meta-Llama-3.1-405B-Instruct
# HUGGINGFACE_DEFAULT_CHAT_MODEL=tiiuae/falcon-mamba-7b
  • Hugging Face image generation model
HUGGINGFACE_DEFAULT_IMG_GEN_MODEL=huggingface_default_img_gen_model

# Tested models:
# HUGGINGFACE_DEFAULT_IMG_GEN_MODEL=black-forest-labs/FLUX.1-dev
# HUGGINGFACE_DEFAULT_IMG_GEN_MODEL=black-forest-labs/FLUX.1-schnell
AWS_S3_CHATBOT_ATTACHMENTS_BUCKET_DEV=exampleapp-chatbot-attachments-dev
AWS_S3_CHATBOT_ATTACHMENTS_BUCKET_QA=exampleapp-chatbot-attachments-qa
AWS_S3_CHATBOT_ATTACHMENTS_BUCKET_STAGING=exampleapp-chatbot-attachments-staging
AWS_S3_CHATBOT_ATTACHMENTS_BUCKET_PROD=exampleapp-chatbot-attachments-prod

Dynamic AI configurations

Configurable via frontend Admin > Configuration Parameters menu option, because they're not included as AWS Lambda environment variables in the deployment scripts.

  • General AI Engine configurations
LANGCHAIN_DEFAULT_MODEL=chat_openai
# LANGCHAIN_DEFAULT_MODEL=anthropic
# LANGCHAIN_DEFAULT_MODEL=groq
# LANGCHAIN_DEFAULT_MODEL=gemini
# LANGCHAIN_DEFAULT_MODEL=clarifai
# LANGCHAIN_DEFAULT_MODEL=gs_huggingface
#                      or huggingface_remote | Genericsuite's Hugging Face lightweight Inference API
# LANGCHAIN_DEFAULT_MODEL=huggingface
# LANGCHAIN_DEFAULT_MODEL=huggingface_pipeline

IMPORTANT: The model_types "huggingface" and "huggingface_pipeline" use the "langchain_hugginface" dependency that required "sentence-transformers", making imposible to deploy the project AWS Lambda Functions. The alternative is the GS Huggingface lightweight identified by model_types "huggingface_remote" or "gs_huggingface".

AI_VISION_TECHNOLOGY=openai
# AI_VISION_TECHNOLOGY=gemini
# AI_VISION_TECHNOLOGY=clarifai
AI_IMG_GEN_TECHNOLOGY=openai
# AI_IMG_GEN_TECHNOLOGY=huggingface
# AI_IMG_GEN_TECHNOLOGY=gemini
# AI_IMG_GEN_TECHNOLOGY=clarifai
AI_AUDIO_TO_TEXT_TECHNOLOGY=openai
# AI_AUDIO_TO_TEXT_TECHNOLOGY=google
# AI_AUDIO_TO_TEXT_TECHNOLOGY=clarifai
AI_TEXT_TO_AUDIO_TECHNOLOGY=openai
# AI_TEXT_TO_AUDIO_TECHNOLOGY=clarifai
EMBEDDINGS_ENGINE=openai
# EMBEDDINGS_ENGINE=clarifai
VECTOR_STORE_ENGINE=FAISS
# VECTOR_STORE_ENGINE=clarifai
# VECTOR_STORE_ENGINE=mongo
# VECTOR_STORE_ENGINE=vectara
# Add aditional models to the LLM
AI_ADDITIONAL_MODELS=0
# AI_ADDITIONAL_MODELS=1
  • Langchain credentials and other parameters
# Langsmith
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_TRACING_V2=true
# Agent configuration
LANGCHAIN_AGENT_TYPE=react_chat_agent
# LANGCHAIN_AGENT_TYPE=react_agent
# LANGCHAIN_AGENT_TYPE=structured_chat_agent
# LANGCHAIN_AGENT_TYPE=LLMSingleActionAgent
LANGCHAIN_MAX_ITERATIONS=8
LANGCHAIN_EARLY_STOPPING_METHOD=force
# LANGCHAIN_EARLY_STOPPING_METHOD=generate
LANGCHAIN_HANDLE_PARSING_ERR=1
# Translate final Chatbot response to the user in case user's language is not english
LANGCHAIN_TRANSLATE_USING=google_translate
# LANGCHAIN_TRANSLATE_USING=initial_prompt
# LANGCHAIN_TRANSLATE_USING=same_model
# LANGCHAIN_TRANSLATE_USING=
LANGCHAIN_USE_LANGSMITH_HUB=0
# LANGCHAIN_USE_LANGSMITH_HUB=1
  • Google other parameters
GOOGLE_MODEL=gemini-pro
GOOGLE_VISION_MODEL=gemini-pro-vision
# GOOGLE_IMG_GEN_MODEL=gemini-pro-vision
GOOGLE_IMG_GEN_MODEL=imagegeneration@005
  • OpenAI other parameters
OPENAI_MAX_TOKENS=500
# Addicional NLP model
OPENAI_MODEL_PREMIUM=gpt-4-turbo-preview
OPENAI_MODEL_INSTRUCT=gpt-3.5-turbo-instruct
# Computer Vision model
OPENAI_VISION_MODEL=gpt-4-vision-preview
# Image generation model
OPENAI_IMAGE_GEN_MODEL=dall-e-3
# Speech-to-text model
OPENAI_VOICE_MODEL=whisper-1
# Text-to-speech model
OPENAI_TEXT_TO_AUDIO_MODEL=tts-1
OPENAI_TEXT_TO_AUDIO_VOICE=onyx
# OPENAI_TEXT_TO_AUDIO_VOICE=alloy
# OPENAI_TEXT_TO_AUDIO_VOICE=echo
# OPENAI_TEXT_TO_AUDIO_VOICE=fable
# OPENAI_TEXT_TO_AUDIO_VOICE=nova
# OPENAI_TEXT_TO_AUDIO_VOICE=shimmer
# Embeddings model
OPENAI_EMBEDDINGS_MODEL=text-embedding-ada-002
# OPENAI_EMBEDDINGS_MODEL=text-embedding-3-small
# Embeddings premium model
OPENAI_EMBEDDINGS_MODEL_PREMIUM=text-embedding-3-large'
  • Anthropic credentials and other parameters
    https://console.anthropic.com/settings/keys
ANTHROPIC_API_KEY=
ANTHROPIC_MODEL=claude-3-5-sonnet-20240620
  • Groq credentials and other parameters
    https://console.groq.com/keys
GROQ_API_KEY=groq_api_key
# https://console.groq.com/docs/models
GROQ_MODEL=mixtral-8x7b-32768
  • AWS Amazon Bedrock credentials and other parameters
    https://console.aws.amazon.com
AWS_BEDROCK_MODEL_ID=amazon.titan-text-premier-v1:0
# AWS_BEDROCK_MODEL_ID=amazon.titan-text-express-v1
# AWS_BEDROCK_MODEL_ID=ai21.jamba-instruct-v1:0
# AWS_BEDROCK_MODEL_ID=anthropic.claude-3-haiku-20240307-v1:0
# AWS_BEDROCK_MODEL_ID=anthropic.claude-3-opus-20240229-v1:0
# AWS_BEDROCK_MODEL_ID=anthropic.claude-3-sonnet-20240229-v1:0
# AWS_BEDROCK_MODEL_ID=anthropic.claude-3-5-sonnet-20240229-v1:0
#
AWS_BEDROCK_IMAGE_GEN_MODEL_ID=stability.stable-diffusion-xl-v1
#
AWS_BEDROCK_CREDENTIALS_PROFILE=
# AWS_BEDROCK_CREDENTIALS_PROFILE=bedrock-admin
#
AWS_BEDROCK_GUARDRAIL_ID=
AWS_BEDROCK_GUARDRAIL_VERSION=
AWS_BEDROCK_GUARDRAIL_TRACE=1
#
AWS_BEDROCK_EMBEDDINGS_MODEL_ID=amazon.titan-embed-text-v1
AWS_BEDROCK_EMBEDDINGS_PROFILE=
# AWS_BEDROCK_EMBEDDINGS_PROFILE=bedrock-admin
  • AI/ML API platform (one API, 200+ AI Models)
    https://aimlapi.com/app/keys
AIMLAPI_API_KEY=aimlapi_api_key

# AIMLAPI_MODEL_NAME=o1-mini
# AIMLAPI_MODEL_NAME=o1-preview

# AIMLAPI_TEMPERATURE=1
  • HuggingFace other parameters
    https://huggingface.co
HUGGINGFACE_MAX_NEW_TOKENS=512
HUGGINGFACE_TOP_K=50
HUGGINGFACE_TEMPERATURE=1
HUGGINGFACE_REPETITION_PENALTY=03
#
# For "huggingface_pipeline" model_type:
# device (`int` or `str` or `torch.device`):
#   Defines the device (*e.g.*, `"cpu"`, `"cuda:1"`, `"mps"`, or a GPU
#   ordinal rank like `1`) on which this pipeline will be allocated.
# HUGGINGFACE_PIPELINE_DEVICE=0
# HUGGINGFACE_PIPELINE_DEVICE=cuda
# IMPORTANT: about "sentence-transformers" lib. Be careful, because
# when it's included, the package size increase by 5 Gb. and if the
# app runs in a AWS Lambda Function, it overpass the package size
# deployment limit.

HUGGINGFACE_EMBEDDINGS_MODEL="BAAI/bge-base-en-v1.5"
# HUGGINGFACE_EMBEDDINGS_MODEL="sentence-transformers/all-mpnet-base-v2"

HUGGINGFACE_EMBEDDINGS_MODEL_KWARGS='{"device":"cpu"}'
HUGGINGFACE_EMBEDDINGS_ENCODE_KWARGS='{"normalize_embeddings": true}'
  • Clarifai credentials and other parameters
    https://clarifai.com > UserId > ProjectId > Settings
# PAT (Personal API Token): https://clarifai.com/settings/security
CLARIFAI_PAT=
CLARIFAI_USER_ID=
CLARIFAI_APP_ID=
AI_CLARIFAI_DEFAULT_CHAT_MODEL=GPT-4
# AI_CLARIFAI_DEFAULT_CHAT_MODEL=claude-v2
# AI_CLARIFAI_DEFAULT_CHAT_MODEL=mixtral-8x7B-Instruct-v0_1
# AI_CLARIFAI_DEFAULT_CHAT_MODEL=llama2-70b-chat
AI_CLARIFAI_DEFAULT_TEXT_EMBEDDING_MODEL==text-embedding-ada
# AI_CLARIFAI_DEFAULT_TEXT_EMBEDDING_MODEL==BAAI-bge-base-en-v15
AI_CLARIFAI_DEFAULT_TEXT_TO_AUDIO_MODEL=speech-synthesis
AI_CLARIFAI_DEFAULT_AUDIO_TO_TEXT_MODEL=whisper
# AI_CLARIFAI_DEFAULT_AUDIO_TO_TEXT_MODEL=whisper-large-v2

AI_CLARIFAI_AUDIO_TO_TEXT_SDK_TYPE=python_sdk
# AI_CLARIFAI_AUDIO_TO_TEXT_SDK_TYPE=clarifai_grpc
AI_CLARIFAI_DEFAULT_IMG_GEN_MODEL=stable-diffusion-xl
# AI_CLARIFAI_DEFAULT_IMG_GEN_MODEL=dall-e-3
AI_CLARIFAI_DEFAULT_VISION_MODEL=openai-gpt-4-vision
# AI_CLARIFAI_DEFAULT_VISION_MODEL=food-item-recognition
  • ElevenLabs
    https://elevenlabs.io/app/subscription
ELEVENLABS_API_KEY=
# Sarah
ELEVENLABS_VOICE_ID_FEMALE=EXAVITQu4vr4xnSDxMaL
# Drew
ELEVENLABS_VOICE_ID_MALE=29vD33N1CtxCmqQRPOHJ
ELEVENLABS_MODEL_ID=eleven_multilingual_v2
ELEVENLABS_STABILITY=0.5
ELEVENLABS_SIMILARITY_BOOST=0.5
ELEVENLABS_STYLE=0
ELEVENLABS_USE_SPEAKER_BOOST=1
  • Cohere credentials and other parameters
    https://dashboard.cohere.com/api-keys
COHERE_API_KEY=
COHERE_EMBEDDINGS_MODEL=embed-english-light-v3.0
  • Ollama parameters
OLLAMA_MODEL=llama:7b
OLLAMA_EMBEDDINGS_MODEL=llama:7b
  • MongooDB embeddings
    https://www.mongodb.com
MONGODB_VS_COLLECTION=
MONGODB_VS_INDEX_NAME=
  • Pinecone credentials and other parameters
    https://app.pinecone.io/keys
# PINECONE_API_KEY=
# PINECONE_ENV=
  • Vectara credentials and other parameters
    https://console.vectara.com/console/apiAccess/personalApiKey
VECTARA_CUSTOMER_ID=
VECTARA_CORPUS_ID=
VECTARA_API_KEY=
  • Weaviate credentials and other parameters
    https://console.weaviate.cloud/dashboard
WEAVIATE_URL=
WEAVIATE_API_KEY=

Code examples and JSON configuration files

The main menu, API endpoints and CRUD editor configurations are defined in the JSON configuration files.

You can find examples about configurations and how to code an App in the GenericSuite App Creation and Configuration guide.

Usage

Check the The GenericSuite backend development scripts for more details.

License

This project is licensed under the ISC License - see the LICENSE file for details.

Credits

This project is developed and maintained by Carlos J. Ramirez. For more information or to contribute to the project, visit GenericSuite AI on GitHub.

Happy Coding!