Skip to main content

No project description provided

Project description

tock-genai-core

Composants principaux d'IA générative : models, factories, gestion des erreurs utilisés dans les composants Gen AI python de tock.

Architecture

Le projet est structuré en trois composants principaux :

  • Models : Contient les définitions des classes et modèles de données utilisés dans l'application
  • Services/Factories : Regroupe la logique métier et les fonctions utilisées par les routes

Technologies

  • Backend : Python
  • Base de données :
    • pgvector pour la base de données vectorielle
  • LLM & RAG :
    • Langchain pour l'orchestration
    • Support de guardrails
    • Reranker pour l'amélioration des résultats
    • Langfuse pour le monitoring

Providers disponibles

  • LLMProvider (LLM)

    • TGI = "HuggingFaceTextGenInference"
    • OpenAI = "OpenAI"
    • Vllm = "Vllm"
  • GuardrailProvider (Guardrail)

    • BloomZ = "BloomzGuardrail"
  • EMProvider (Embedding)

    • BloomZ = "BloomzEmbeddings"
    • OpenAI = "OpenAI"
    • Vllm = "Vllm"
  • VectorDBProvider (Database)

    • OpenSearch = "OPENSEARCH"
    • PGVector = "PGVECTOR"
  • ContextualCompressorProvider (Contetual Compressor)

    • BloomZ = "BloomzRerank"

Secret Keys

Types disponibles :

  • RawSecretKey : stocke directement la valeur du secret.
    • Champ principal : secret
    • Alias rétro-compatible : value (encore utilisable pour compatibilité, mais à éviter dans les nouvelles configurations).
  • AwsSecretKey : référence un secret dans AWS Secrets Manager.
  • KubernetesSecretKey : référence un secret dans Kubernetes Secrets.
  • GcpSecretKey : référence un secret dans GCP Secret Manager.

GCP Secret Manager

Pour utiliser GcpSecretKey, un project_id GCP doit être disponible.
Il est résolu automatiquement de la façon suivante :

  1. Si la variable d’environnement GCP_PROJECT_ID est définie -> elle est utilisée directement.
  2. Sinon, le project_id est automatiquement détecté à partir des credentials Google (GOOGLE_APPLICATION_CREDENTIALS).

Settings

  • Embedding

    • Classe parente

      BaseEMSetting:
          provider: EMProvider
          model: Optional[str]
          api_key: Optional[SecretKey]
          api_base: str
          pooling: Optional[str]
          space_type: Optional[str]
      
    • Classes enfants

      BloomZEMSetting(BaseEMSetting):
          provider: Literal[EMProvider.BloomZ]
      
      VLLMEMSetting(BaseEMSetting):
          provider: Literal[EMProvider.Vllm]
          model: str
      
      OpenAIEMSetting(BaseEMSetting):
          provider: Literal[EMProvider.OpenAI]
          api_base: str
          api_version: str
          deployment: str
      
  • Contextual compressor

    • Classe parente

      BaseCompressorSetting:
          provider: ContextualCompressorProvider
          endpoint: str
          api_key: Optional[SecretKey]
      
    • Classe enfant

      BloomZCompressorSetting(BaseCompressorSetting):
          provider: Literal[ContextualCompressorProvider.BloomZ]
          min_score: float
          max_documents: Optional[int]
          label: Optional[str]
      
  • Database

    • Classe parente

      BaseVectorDBSetting:
          index: Optional[str]
          provider: VectorDBProvider
          db_url: str
      
    • Classes enfants

      OpenSearchSetting(BaseVectorDBSetting):
          provider: Literal[VectorDBProvider.OpenSearch]
          username: SecretKey
          password: SecretKey
          use_ssl: bool
          verify_certs: bool
      
      class PGVectorSetting(BaseVectorDBSetting):
          provider: Literal[VectorDBProvider.PGVector]
          username: SecretKey
          password: SecretKey 
          db_name: str
          sslmode: Optional[str]
          namespace: str
      
  • Guardrail

    • Classe parente

      BaseGuardrailSetting:
          provider: GuardrailProvider
          api_base: str
          max_score: Optional[float]
          api_key: Optional[SecretKey]
      
    • Classe enfant

      BloomZGuardrailSetting(BaseGuardrailSetting):
          provider: Literal[GuardrailProvider.BloomZ]
      
  • Langfuse

    LangfuseSetting:
        host: Optional[str]
        public_key: Optional[SecretKey]
        secret_key: Optional[SecretKey]
        metadata: Optional[Dict[str, Any]]
    
  • LLM

    • Classe parente

      BaseLLMSetting:
          provider: LLMProvider
          model: Optional[str]
          api_key: Optional[SecretKey]
          temperature: float
      
    • Classes enfants

      OpenAILLMSetting(BaseLLMSetting):
          provider: Literal[LLMProvider.OpenAI]
          api_base: str
          api_version: str
          deployment: str
      
      HuggingFaceTextGenInferenceLLMSetting(BaseLLMSetting):
          provider: Literal[LLMProvider.TGI]
          repetition_penalty: float
          max_new_tokens: int
          api_base: str
          streaming: bool
      
      VllmSetting(BaseLLMSetting):
          provider: Literal[LLMProvider.Vllm]
          api_base: str
          max_new_tokens: int
          additional_model_kwargs: Optional[Dict[str, Any]]
      

Fonctionnement

Chaque outil utilisé (database, embedding, llm, langfuse, ...) a besoin d'un certains nombre de paramètres qui sont référencés dans les models (classes de settings)

Ces classes sont ensuite héritées par des services ou des factories afin de pouvoir répondre au besoin.

Exemple de get_vector_db_factory qui crée une factory de base vectorielle basée sur le nom de l'application et les paramètres d'embedding fournis

from tock-genai-core import get_vector_db_factory
from tock-genai-core import PGVectorSetting, VLLMEMSetting
from tock-genai-core import DBSetting, EMSetting


db_settings = PGVectorSetting(
    index = "first_index",
    provider = "PGVECTOR",
    db_url = "127.0.0.1:XXXX",
    db_name = "rag_sandbox_db",
    sslmode = "disable",
    username = {
      type = "Raw",
      value = "admin"
    },
    password = {
      type = "Raw",
      value = "example"
    },
    namespace = "test-name"
)

em_settings = VLLMEMSetting(
    provider = "Vllm",
    model = "model_name",
    api_base = "https://continue.com/v1"
)



def function_name(db_settings: DBSetting, em_settings: EMSetting):

    # do somethings

    vector = get_vector_db_factory(db_settings: DBSetting, em_settings: BaseEMSetting)

    # do somethings

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tock_genai_core-1.5.2.tar.gz (25.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tock_genai_core-1.5.2-py3-none-any.whl (62.0 kB view details)

Uploaded Python 3

File details

Details for the file tock_genai_core-1.5.2.tar.gz.

File metadata

  • Download URL: tock_genai_core-1.5.2.tar.gz
  • Upload date:
  • Size: 25.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/6.11.0-1018-azure

File hashes

Hashes for tock_genai_core-1.5.2.tar.gz
Algorithm Hash digest
SHA256 4e7b63ecb8b939f9ca8d9e54f64ea321ee915c06ef7c2864a4e569569c92d394
MD5 64a4e727815ebd504ae90724f7fb3ae0
BLAKE2b-256 221b263fc0c18b5afeebe2a0118ee8aa0aea6b5e2438f548e4017b8c8c2c332a

See more details on using hashes here.

File details

Details for the file tock_genai_core-1.5.2-py3-none-any.whl.

File metadata

  • Download URL: tock_genai_core-1.5.2-py3-none-any.whl
  • Upload date:
  • Size: 62.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.10.19 Linux/6.11.0-1018-azure

File hashes

Hashes for tock_genai_core-1.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3da68f5df4bdca18238e86b6b0851944ed19302f1d1a39e4202b6205854c370e
MD5 5f4ec44bb9bb2c0c6dc53cf88ed7afb9
BLAKE2b-256 9ebbedb42ff8eb287de29048ebaa4bb762f6af80cf87f6ed130cf3e9ab25d474

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page