YAMLLM
A Python library for YAML-based LLM configuration and execution.
Installation
pip install yamllm-core
uv add yamllm-core
Quick Start
In order to run a simple query, run a script as follows. NOTE: Printing of the response is not required as this is handles by the query method. This uses the rich library to print the responses in the console.
from yamllm.core.llm import OpenAIGPT, GoogleGemini, DeepSeek, MistralAI
import os
import dotenv
dotenv.load_dotenv()
config_path = "path/to/config.yaml"
# Initialize LLM with config
llm = GoogleGemini(config_path=config_path, api_key=os.environ.get("GOOGLE_API_KEY"))
# Make a query
response = llm.query("Give me some boiler plate pytorch code please")
In order to have an ongoing conversation with the model, run a script as follows.
from yamllm.core.llm import OpenAIGPT, GoogleGemini, DeepSeek, MistralAI
from rich.console import Console
import os
import dotenv
dotenv.load_dotenv()
console = Console()
config_path = "path/to/config.yaml"
llm = GoogleGemini(config_path=config_path, api_key=os.environ.get("GOOGLE_API_KEY"))
while True:
try:
prompt = input("\nHuman: ")
if prompt.lower() == "exit":
break
response = llm.query(prompt)
if response is None:
continue
except FileNotFoundError as e:
console.print(f"[red]Configuration file not found:[/red] {e}")
except ValueError as e:
console.print(f"[red]Configuration error:[/red] {e}")
except Exception as e:
console.print(f"[red]An error occurred:[/red] {str(e)}")
Configuration
YAMLLM uses YAML files for configuration. Set up a .config file to define the parameters for your LLM instance. This file should include settings such as the model type, temperature, maximum tokens, and system prompt.
Example configuration:
name: "openai" # supported: openai, google, deepseek, mistral
model: "gpt-4o-mini" # model identifier
api_key: # api key goes here, best practice to put into dotenv
base_url: # optional: for custom endpoints e.g. "https://generativelanguage.googleapis.com/v1beta/openai/"
# Model Configuration
model_settings:
temperature: 0.7
max_tokens: 1000
top_p: 1.0
frequency_penalty: 0.0
presence_penalty: 0.0
stop_sequences: []
# Request Settings
request:
timeout: 30 # seconds
retry:
max_attempts: 3
initial_delay: 1
backoff_factor: 2
# Context Management
context:
system_prompt: "You are a helpful assistant, helping me achieve my goals"
max_context_length: 16000
memory:
enabled: true
max_messages: 10 # number of messages to keep in conversation history
conversation_db: "yamllm/memory/conversation_history.db"
vector_store:
index_path: "yamllm/memory/vector_store/faiss_index.idx"
metadata_path: "yamllm/memory/vector_store/metadata.pkl"
# Output Formatting
output:
format: "text" # supported: text, json, markdown
stream: false
logging:
level: "INFO"
file: "yamllm.log"
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
# Tool Management - In development
tools:
enabled: false
tool_timeout: 10 # seconds
tool_list: ['calculator', 'web_search']
# Safety Settings
safety:
content_filtering: true
max_requests_per_minute: 60
sensitive_keywords: []
Place the .config file in your project directory and reference it in your code to initialize the LLM instance.
Features
- YAML-based configuration
- Simple API interface
- Customizable prompt templates
- Error handling and retry logic
- In built memory management in sqlite database for short term memory
- Use of vector database for long term memory based on semantic search
- Choose streaming or non-streamed response
License
MIT License
Metadata
Release files for llmyaml 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| llmyaml-0.1.8.tar.gz | 124.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llmyaml-0.1.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 128.0 kB
Release files / llmyaml-0.1.8.tar.gz
| Download URL | llmyaml-0.1.8.tar.gz |
|---|---|
| Size | 124.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1c95d97ad6afb8ca63160b3d1b37401b09b3d63b08b62f703ae768d35d15a17f
|
|
BLAKE2b-256 checksum How to use checksums |
dd546bca5b63bf108cc453c29b0188f7aac0414a4cc6df82bf8cbad8872ad478
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|
Release files / llmyaml-0.1.8-py3-none-any.whl
| Download URL | llmyaml-0.1.8-py3-none-any.whl |
|---|---|
| Size | 3.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fbd71c1854713c398a46c30a75b70ef1e7f8b7ed075880cb64ec1ec017993b51
|
|
BLAKE2b-256 checksum How to use checksums |
8594fd1ec82577742ab7de569f9163733ab81d434229dcfbf449fb40ff9fc7db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|
Security for llmyaml 0.1.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.