Skip to main content

Unified interface for LLM, TTS, and STT providers

Project description

๐Ÿง  AI Services Modules

This repository provides a unified interface to interact with multiple Large Language Model (LLM) providers for tasks like:

  • ๐Ÿ’ฌ Text Generation & Chat Completion
  • ๐Ÿ—ฃ๏ธ Text-to-Speech (TTS)
  • ๐ŸŽง Speech-to-Text (STT)
  • ๐Ÿ“Š Evaluation via prompt templates

๐Ÿ“Œ Features

  • ๐Ÿ”„ Unified API across major providers:
    • LLM: OpenAI, Gemini, Groq, Anthropic
    • TTS: OpenAI, GTTS, Gemini
    • STT: OpenAI
  • โœ… Easy integration of multiple providers
  • ๐ŸŽฏ Evaluation prompt templates


๐Ÿ”ง Quick Start via GitHub (No Need to Clone)

You can install the package directly from GitHub using pip:

pip install git+https://github.com/guvi-research/guvi-ai-service.git

โœ… Steps to Use

  1. Create a new project folder and inside it, add a .env file with your API keys:
OPENAI_API_KEY=your_openai_key_here
GEMINI_API_KEY=your_gemini_key_here
GROQ_API_KEY=your_groq_key_here
ANTHROPIC_API_KEY=your_anthropic_key_here
MONGODB_URI=your_mongo_uri_here
  1. Create a test.py file like this:
from dotenv import load_dotenv
from ai_services.utils.mongo_logger import MongoEventLogger
from ai_services.client import LLMClient
from ai_services.provider_factory import get_provider
import os

load_dotenv()

# Setup logger
mongo_logger = MongoEventLogger(
    db_uri=os.getenv("MONGODB_URI"),
    db_name="AI_logs",
    collection_name="chat_completion_logs"
)

# Messages for the model
messages = [
    {"role": "system", "content": "You are a interview assistant."},
    {"role": "user", "content": "give me a single tip for peace"}
]

# Get provider
provider = get_provider(
    name="openai",
    model="gpt-4.1-nano",
    event_logger=mongo_logger
)

# Initialize client
client = LLMClient(provider)
response = client.chat(messages)
print("Response:", response)
  1. Run the file:
python test.py

๐Ÿ”Œ Supported Providers

Task Providers
Text Generation OpenAI, Groq, Gemini, Anthropic
Text-to-Speech (TTS) OpenAI, GTTS, Gemini
Speech-to-Text (STT) OpenAI

Use provider_type as:

  • llm โ†’ for text generation
  • tts โ†’ for text-to-speech
  • stt โ†’ for speech-to-text

๐Ÿงพ MongoDB Event Logging (Optional)

This project supports logging API events (LLM, TTS, STT) into MongoDB for analytics, debugging, or auditing.

Mongo Log Structure:

Each interaction stores:

{
  "timestamp": "2025-06-19T10:45:12Z",
  "service_type": "TTS",
  "module": "openai_provider",
  "function": "generate_speech",
  "request_data": { "text": "Hello world" },
  "response_data": { "status": "audio_generated" },
  "status": "success",
  "error": null
}

.env Setup:

MONGODB_URI=mongodb+srv://<user>:<pass>@cluster.mongodb.net/

MongoDB Integration:

from utils.mongo_logger import MongoEventLogger

mongo_logger = MongoEventLogger(
    db_uri=os.getenv("MONGODB_URI"),
    db_name="AI_Interview",
    collection_name="tts_logs"
)

tts_provider = get_provider(
    name="openai",
    provider_type="tts",
    model="gpt-4o-mini-tts",
    voice="alloy",
    event_logger=mongo_logger
)

๐Ÿš€ How to Run by cloning the repo

HOW TO CLONE AI SERVICE REPO:

git clone "https://github.com/guvi-research/guvi-ai-service.git"

๐Ÿ›  Prerequisites

  • Python 3.8+

  • API Keys (store in .env file):

    OPENAI_API_KEY=your_openai_key_here
    GEMINI_API_KEY=your_gemini_key_here
    GROQ_API_KEY=your_groq_key_here
    ANTHROPIC_API_KEY=your_anthropic_key_here
    MONGODB_URI=your_uri_link_here
    
  • Install requirements:

    pip install -r requirements.txt
    

1๏ธโƒฃ Text Generation (LLM)

File: examples/llm_usage.py

from llm_module.client import LLMClient
from llm_module.provider_factory import get_provider

uri = os.getenv("MONGODB_URI")
mongo_logger = MongoEventLogger(
    db_uri=uri,
    db_name = "AI_Services",
    collection_name = "chat_completion_logs"
)

messages = [
  {"role": "system", "content": "You are a helpful assistant."},
  {"role": "user", "content": "What is your role?"}
]

provider = get_provider(
    name="gemini",  
    model="gemini-2.0-flash",
    event_logger=mongo_logger
)
client = LLMClient(provider)

response = client.chat(messages)
print("Response:", response)

Run:

python examples/llm_usage.py

2๏ธโƒฃ Text-to-Speech (TTS)

File: examples/tts_usage.py

from tts_module.client import TTSClient
from tts_module.provider_factory import get_provider

uri = os.getenv("MONGODB_URI")
mongo_logger = MongoEventLogger(
    db_uri=uri,
    db_name = "AI_Services",
    collection_name = "tts_logs"
)

tts_provider = get_provider("openai", provider_type="tts",  model="gpt-4o-mini-tts", voice="alloy", event_logger=mongo_logger)

client = TTSClient(tts_provider)
client.speak("Hello, this is a text-to-speech test.")

Run:

python examples/tts_usage.py

3๏ธโƒฃ Speech-to-Text (STT)

File: examples/stt_usage.py

from stt_module.client import STTClient
from stt_module.provider_factory import get_provider

uri = os.getenv("MONGODB_URI")
mongo_logger = MongoEventLogger(
    db_uri=uri,
    db_name = "AI_Services",
    collection_name = "stt_logs"
)

audio_path = "path/to/audio.mp3"

stt_provider = get_provider("openai", provider_type="stt", model="gpt-4o-mini-transcribe",event_logger=mongo_logger)
client = STTClient(stt_provider)

result = client.transcribe(audio_path)
print("Transcription:", result)

Run:

python examples/stt_usage.py

โœ… Notes

  • Ensure .env is set before running any script.
  • Choose the correct provider and model as required.
  • All logs are automatically stored in MongoDB (if event_logger is passed).
guvi-ai-service-main
โ”œโ”€ ai_services
โ”‚  โ”œโ”€ base.py
โ”‚  โ”œโ”€ client.py
โ”‚  โ”œโ”€ config.py
โ”‚  โ”œโ”€ dependencies
โ”‚  โ”‚  โ”œโ”€ stt_common_functions.py
โ”‚  โ”‚  โ”œโ”€ tts_common_functions.py
โ”‚  โ”‚  โ””โ”€ __init__.py
โ”‚  โ”œโ”€ logger.py
โ”‚  โ”œโ”€ prompts
โ”‚  โ”‚  โ”œโ”€ evaluation_prompt_generator.py
โ”‚  โ”‚  โ””โ”€ __init__.py
โ”‚  โ”œโ”€ providers
โ”‚  โ”‚  โ”œโ”€ anthropic_provider.py
โ”‚  โ”‚  โ”œโ”€ gemini_provider.py
โ”‚  โ”‚  โ”œโ”€ groq_provider.py
โ”‚  โ”‚  โ”œโ”€ gtts_provider.py
โ”‚  โ”‚  โ”œโ”€ openai_provider.py
โ”‚  โ”‚  โ””โ”€ __init__.py
โ”‚  โ”œโ”€ provider_factory.py
โ”‚  โ”œโ”€ utils
โ”‚  โ”‚  โ”œโ”€ error_handler.py
โ”‚  โ”‚  โ”œโ”€ input_validator.py
โ”‚  โ”‚  โ”œโ”€ mongo_logger.py
โ”‚  โ”‚  โ””โ”€ __init__.py
โ”‚  โ””โ”€ __init__.py
โ”œโ”€ examples
โ”‚  โ”œโ”€ llm_usage.py
โ”‚  โ”œโ”€ s3versioncontrollesson7.mp3
โ”‚  โ”œโ”€ stt_usage.py
โ”‚  โ””โ”€ tts_usage.py
โ”œโ”€ pyproject.toml
โ””โ”€ README.md

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

ai_services_kit-0.1.2.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

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

ai_services_kit-0.1.2-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

Details for the file ai_services_kit-0.1.2.tar.gz.

File metadata

  • Download URL: ai_services_kit-0.1.2.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for ai_services_kit-0.1.2.tar.gz
Algorithm Hash digest
SHA256 86a7eae65874b13addccc2a51048195fcdbb6cac2b67b46e09406e769e92571a
MD5 31c770e53a693992d0d7d9dba1b587e0
BLAKE2b-256 2b00f51a478ca43aabb88df9105b54a4d8ec0e1f8d68b4d6905e8f7e733608e6

See more details on using hashes here.

File details

Details for the file ai_services_kit-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ai_services_kit-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 eddca2f08162d10f25cd1e1ee2c96684c28e59bd95effcb7903d61744500a0e6
MD5 55d916611b44e6345ee59f7898ebf703
BLAKE2b-256 8c8bbb38d4d053b0158e3db0ac9eae531ed2dafc62f16d504a6150cdb503fd16

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