Generative AI tools from ToolForge-AI organization
Project description
genai-forge
Lightweight utilities to call LLMs and parse their outputs with Pydantic.
Installation
Install from PyPI:
pip install genai-forge
Requirements
- Python 3.10+
- An OpenAI API key in your environment:
- Create a
.envfile at your project root with:
- Create a
OPENAI_API_KEY=sk-...
genai_forge will load .env automatically via python-dotenv when using the OpenAI provider.
Quick start
from genai_forge.llm import create_llm
from genai_forge.prompting import PromptTemplate
template = PromptTemplate(
system="You are a concise expert assistant.",
template="Generate one actionable tip.\nAudience: {audience}\nTime: {time}",
)
llm = create_llm("openai:gpt-4o-mini", temperature=0.2)
# Chain: query | template | llm
query = "Provide a short productivity tip."
chain = query | template | llm
print(chain({"audience": "Backend Python developer", "time": "30 minutes"}))
Parsing structured outputs with Pydantic
Use PydanticOutputParser to have the LLM return valid JSON that is validated into a Pydantic model. When you add a parser to the chain, the parser’s format instructions are automatically appended to the prompt; you do not need to place {instructions} in your template.
from typing import List
from pydantic import BaseModel
from genai_forge.llm import create_llm
from genai_forge import PydanticOutputParser
from genai_forge.prompting import PromptTemplate
class CityPlan(BaseModel):
city: str
attractions: List[str]
days: int
template = PromptTemplate(
system="You are a helpful travel planner.",
template="Create a city plan.\nCity: {city}\nDays: {days}",
)
llm = create_llm("openai:gpt-4o-mini", temperature=0.1)
parser = PydanticOutputParser(CityPlan)
# Chain: query | template | llm | parser
query = "Create a 2-day city plan for Kyoto."
chain = query | template | llm | parser
result = chain({"city": "Kyoto", "days": 2}) # -> CityPlan
print(result)
What chaining does
The | operator builds a Chain:
template | llmproduces a function that formats the prompt (system + user) and calls the LLM.template | llm | parseralso injects the parser's format instructions automatically into the prompt and validates the output.
Output parser: how it works
PydanticOutputParser:
- Accepts tolerant output formats (e.g., extra text or ```json fences).
- Extracts JSON from the text (tries direct parse, then finds the first balanced
{...}block). - Validates the JSON against your Pydantic model.
- Provides
get_format_instructions(); the Chain appends it for you when a parser is present.
API surface:
from genai_forge import PydanticOutputParser, BaseOutputParser, OutputParserException
Key methods:
get_format_instructions() -> str: Include in your prompt.parse(text: str) -> BaseModel: Parse and validate output.
Provider configuration
By default, models without an explicit provider use openai. You can specify:
create_llm("openai:gpt-4o-mini")
# or
create_llm("gpt-4.1", provider="openai")
The OpenAI provider reads the key from OPENAI_API_KEY (or api_key argument).
Running the example
An example.py is included at the repo root. It demonstrates:
- A chain: user input → PromptTemplate (with system prompt) → LLM → PydanticOutputParser
- Automatic format instructions injection
Ensure you have a .env with OPENAI_API_KEY, then:
python example.py
License
See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file genai_forge-0.1.15.tar.gz.
File metadata
- Download URL: genai_forge-0.1.15.tar.gz
- Upload date:
- Size: 28.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e94e8f99c58ff2ee0295e52a813c649f763d084e35601a094dab87b3259a6b8
|
|
| MD5 |
3aa3c22ca65269471bef3f61aaea210f
|
|
| BLAKE2b-256 |
76411a000d2d0adb60d65480d4c3ecb9febb3c173829819281198dfd90f3d67a
|
Provenance
The following attestation bundles were made for genai_forge-0.1.15.tar.gz:
Publisher:
release.yml on ToolForge-AI/genai-forge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
genai_forge-0.1.15.tar.gz -
Subject digest:
4e94e8f99c58ff2ee0295e52a813c649f763d084e35601a094dab87b3259a6b8 - Sigstore transparency entry: 696095446
- Sigstore integration time:
-
Permalink:
ToolForge-AI/genai-forge@b92aa4ca539d6ca125e995d492d38a79ff138f92 -
Branch / Tag:
refs/tags/0.1.15 - Owner: https://github.com/ToolForge-AI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b92aa4ca539d6ca125e995d492d38a79ff138f92 -
Trigger Event:
push
-
Statement type:
File details
Details for the file genai_forge-0.1.15-py3-none-any.whl.
File metadata
- Download URL: genai_forge-0.1.15-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26dfd4f884d45a70fa9a53c6fcac7288c6f7b935bf6f04d3c701cbb3c069de77
|
|
| MD5 |
e9a9ff7eaac42ed55484654eca209194
|
|
| BLAKE2b-256 |
89053a94317feb8378b70c57377af4d54572406eb76ddc8e9699048c00e562a6
|
Provenance
The following attestation bundles were made for genai_forge-0.1.15-py3-none-any.whl:
Publisher:
release.yml on ToolForge-AI/genai-forge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
genai_forge-0.1.15-py3-none-any.whl -
Subject digest:
26dfd4f884d45a70fa9a53c6fcac7288c6f7b935bf6f04d3c701cbb3c069de77 - Sigstore transparency entry: 696095451
- Sigstore integration time:
-
Permalink:
ToolForge-AI/genai-forge@b92aa4ca539d6ca125e995d492d38a79ff138f92 -
Branch / Tag:
refs/tags/0.1.15 - Owner: https://github.com/ToolForge-AI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b92aa4ca539d6ca125e995d492d38a79ff138f92 -
Trigger Event:
push
-
Statement type: