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.9.tar.gz (28.4 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.9-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: genai_forge-0.1.9.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

Hashes for genai_forge-0.1.9.tar.gz
Algorithm Hash digest
SHA256 fa5b6839df20237eb87f5d44f4cbfbe2c9cfa39428d7d7a7d90bbd8b0c05f932
MD5 9d08b64df1d045a2945f77aae6f9599e
BLAKE2b-256 89f494497f8d12c1d4eccf941f87df52f85c263a2bf215bfd1f81abd4ecf4c4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for genai_forge-0.1.9.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.9-py3-none-any.whl.

File metadata

  • Download URL: genai_forge-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 15.1 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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 c261b3d18a11372ba3d9368edaa36da447dd6dda0b1d244990a1b26ca9e1047a
MD5 3cfd1cc9adec3d23d7b4e29105d77470
BLAKE2b-256 14cc28f986a4397803edef8052296cf6a9d9cb274a3167592ff61253dcbcedf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for genai_forge-0.1.9-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