Skip to main content

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 .env file at your project root with:
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 | llm produces a function that formats the prompt (system + user) and calls the LLM.
  • template | llm | parser also 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


Download files

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

Source Distribution

genai_forge-0.1.8.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

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

genai_forge-0.1.8-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file genai_forge-0.1.8.tar.gz.

File metadata

  • Download URL: genai_forge-0.1.8.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for genai_forge-0.1.8.tar.gz
Algorithm Hash digest
SHA256 59045c06cfd7a760dac064b5695838a80c034fefab6020899f47f4d8ef82115b
MD5 65a4838c5def1726e7dab262da574c45
BLAKE2b-256 29f997fec1f994cf07586d75a314a3637717319ab22972b829c15c956a31b390

See more details on using hashes here.

Provenance

The following attestation bundles were made for genai_forge-0.1.8.tar.gz:

Publisher: release.yml on ToolForge-AI/genai-forge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file genai_forge-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: genai_forge-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for genai_forge-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 5d99168604e20419c74a0f727cff01c7ca9b2b794cb204f5c18e353981e93221
MD5 ba1b50e52379480572978e6e60247cb9
BLAKE2b-256 84c540bf8bf0d614e7ed4c07c235d41a8ea1e6dccf9acf565c1dc8c24a66580d

See more details on using hashes here.

Provenance

The following attestation bundles were made for genai_forge-0.1.8-py3-none-any.whl:

Publisher: release.yml on ToolForge-AI/genai-forge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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