Skip to main content

A unified interface for interacting with various LLM and embedding providers, with observability tools.

Project description

AiCore Project

GitHub Stars GitHub Downloads Python Versions

This project provides a framework for integrating various language models and embedding providers. It supports both synchronous and asynchronous operations for generating text completions and embeddings.

AiCore also contains native support to augment traditional Llms with reasoning capabilities by providing them with the thinking steps generated by an open-source reasoning capable model, allowing it to generate its answers in a Reasoning Augmented way.

This can be usefull in multiple scenarios, such as:

  • ensure your agentic systems still work with the propmts you have crafted for your favourite llms while augmenting them with reasoning steps
  • direct control for how long you want your reasoner to reason (via max_tokens param) and how creative it can be (reasoning temperature decoupled from generation temperature) without compromising generation settings

New Feature: Observability Module

AiCore now includes a comprehensive observability module that helps you track, analyze, and visualize your LLM operations:

  • Data Collection: Automatically captures detailed information about each LLM completion operation, including arguments, responses, token usage, and latency metrics.
  • Interactive Dashboard: A Dash/Plotly-based dashboard for visualizing operation history, performance trends, and usage patterns.
  • Efficient Storage: Uses Polars dataframes for high-performance data processing and storage in JSON format.
  • Complete Integration: Seamlessly integrated with the existing LLM provider system.

To use the observability dashboard:

from aicore.observability import ObservabilityDashboard

dashboard = ObservabilityDashboard(storage=storage)

# Run the dashboard server
dashboard.run_server(debug=True, port=8050)

Built with AiCore

Reasoner4All A Hugging Face Space where you can chat with multiple reasoning augmented models.

Hugging Face Space

CodeGraph A Graph representation of your codebase for effective retrieval at file/obj level coming soon

Quickstart

pip install git+https://github.com/BrunoV21/AiCore@0.1.9

Features

LLM Providers:

  • Anthropic
  • OpenAI
  • Mistral
  • Groq
  • Gemini
  • Nvidia
  • OpenRouter

Embedding Providers:

  • OpenAI
  • Mistral
  • Groq
  • Gemini
  • Nvidia

Observability Tools:

  • Operation tracking and metrics collection
  • Interactive dashboard for visualization
  • Token usage and latency monitoring

To configure the application for testing, you need to set up a config.yml file with the necessary API keys and model names for each provider you intend to use. The CONFIG_PATH environment variable should point to the location of this file. Here's an example of how to set up the config.yml file:

# config.yml
embeddings:
  provider: "openai" # or "mistral", "groq", "gemini", "nvidia"
  api_key: "your_openai_api_key"
  model: "your_openai_embedding_model" # Optional

llm:
  provider: "openai" # or "mistral", "groq", "gemini", "nvidia"
  api_key: "your_openai_api_key"
  model: "gpt-4o" # Optional
  temperature: 0.1
  max_tokens: 1028

Reasoner Augmented Config

To leverage the reasoning augmentation just introduce one of the supported llm configs into the reasoner field and AiCore handles the rest

# config.yml
embeddings:
  provider: "openai" # or "mistral", "groq", "gemini", "nvidia"
  api_key: "your_openai_api_key"
  model: "your_openai_embedding_model" # Optional

llm:
  provider: "mistral" # or "openai", "groq", "gemini", "nvidia"
  api_key: "your_mistral_api_key"
  model: "mistral-small-latest" # Optional
  temperature: 0.6
  max_tokens: 2048
  reasoner:
    provider: "groq" # or openrouter or nvidia
    api_key: "your_groq_api_key"
    model: "deepseek-r1-distill-llama-70b" # or "deepseek/deepseek-r1:free" or "deepseek/deepseek-r1"
    temperature: 0.5
    max_tokens: 1024

Usage

Language Models

You can use the language models to generate text completions. Below is an example of how to use the MistralLlm provider:

from aicore.llm.config import LlmConfig
from aicore.llm.providers import MistralLlm

config = LlmConfig(
    api_key="your_api_key",
    model="your_model_name",
    temperature=0.7,
    max_tokens=100
)

mistral_llm = MistralLlm.from_config(config)
response = mistral_llm.complete(prompt="Hello, how are you?")
print(response)

Embeddings

You can use the embeddings module to generate text embeddings. Below is an example of how to use the OpenAiEmbeddings provider:

from aicore.embeddings.config import EmbeddingsConfig
from aicore.embeddings import Embeddings

config = EmbeddingsConfig(
    provider="openai",
    api_key="your_api_key",
    model="your_model_name"
)

embeddings = Embeddings.from_config(config)
vectors = embeddings.generate(["Hello, how are you?"])
print(vectors)

For asynchronous usage:

import asyncio
from aicore.embeddings.config import EmbeddingsConfig
from aicore.embeddings import Embeddings

async def main():
    config = EmbeddingsConfig(
        provider="openai",
        api_key="your_api_key",
        model="your_model_name"
    )

    embeddings = Embeddings.from_config(config)
    vectors = await embeddings.agenerate(["Hello, how are you?"])
    print(vectors)

asyncio.run(main())

Loading from a Config File

To load configurations from a YAML file, set the CONFIG_PATH environment variable and use the Config class to load the configurations. Here is an example:

from aicore.config import Config
from aicore.llm import Llm
import os

if __name__ == "__main__":
    os.environ["CONFIG_PATH"] = "./config/config.yml"
    config = Config.from_yaml()
    llm = Llm.from_config(config.llm)
    llm.complete("Once upon a time, there was a")

Make sure your config.yml file is properly set up with the necessary configurations.

License

This project is licensed under the Apache 2.0 License.

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

core_for_ai-0.1.85.tar.gz (53.9 kB view details)

Uploaded Source

Built Distribution

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

core_for_ai-0.1.85-py3-none-any.whl (53.9 kB view details)

Uploaded Python 3

File details

Details for the file core_for_ai-0.1.85.tar.gz.

File metadata

  • Download URL: core_for_ai-0.1.85.tar.gz
  • Upload date:
  • Size: 53.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for core_for_ai-0.1.85.tar.gz
Algorithm Hash digest
SHA256 af62cc04a18b9e5920a5a22957894b00470342072c9f2f36c174b9202f787bd6
MD5 50da4ff8f23fd13843ee65c9e1fd6c76
BLAKE2b-256 3873cacb03d889791377dba539619ceb3258a53fd2ff73cf8f59d97eaa96b15d

See more details on using hashes here.

File details

Details for the file core_for_ai-0.1.85-py3-none-any.whl.

File metadata

  • Download URL: core_for_ai-0.1.85-py3-none-any.whl
  • Upload date:
  • Size: 53.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for core_for_ai-0.1.85-py3-none-any.whl
Algorithm Hash digest
SHA256 5cd5328a8467a148858695d0e0c07306824f8605d9d8d46b388610a5ca8611b0
MD5 ab86e87591c4d054f5d9f896fb79813f
BLAKE2b-256 c7d0bbd08e3ac2973dca7b7e6cc02f41af307d9b0f896cb5b1027df312145695

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