Skip to main content

Utilities for managing multi-shot conversations and structured data handling in LLM applications

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

mdi-llmkit

Utilities for managing LLM chat conversations and structured JSON responses with OpenAI's Responses API.

Installation

pip install mdi-llmkit

Quick Start

Preferred subpackage imports:

from mdi_llmkit.gpt_api import GptConversation
from mdi_llmkit.json_surgery import json_surgery

gpt_submit

from openai import OpenAI
from mdi_llmkit.gpt_api import gpt_submit

client = OpenAI()

reply = gpt_submit(
    messages=[{"role": "user", "content": "Say hello."}],
    openai_client=client,
)
print(reply)

GptConversation

from openai import OpenAI
from mdi_llmkit.gpt_api import GptConversation

client = OpenAI()
conversation = GptConversation(openai_client=client)

reply = conversation.submit_user_message("Give me three project name ideas.")
print(reply)

JSON Response Mode

from openai import OpenAI
from mdi_llmkit.gpt_api import gpt_submit

client = OpenAI()

result = gpt_submit(
    messages=[{"role": "user", "content": "Return JSON with keys a and b."}],
    openai_client=client,
    json_response=True,
)

print(type(result))  # dict or list
print(result)

JSON Surgery

from openai import OpenAI
from mdi_llmkit.json_surgery import json_surgery

client = OpenAI()

obj = {"status": "pending", "tags": ["alpha"]}
result = json_surgery(
    client,
    obj,
    'Set status to "approved" and append "done" to tags.',
)

print(result)

Placemark helpers are available in mdi_llmkit.json_surgery.placemarked_json:

  • placemarked_json_stringify(obj, indent=2, skipped_keys=None)
  • navigate_to_json_path(obj, json_path)

Local Dev (Windows venv)

From packages/python-mdi-llmkit, activate the project venv and run tests:

.\venv\Scripts\Activate.ps1
python -c "import sys; print(sys.executable)"
python -m unittest tests/test_placemarked_json.py tests/test_json_surgery_unit.py

Live json_surgery integration tests (real API) require OPENAI_API_KEY:

python -m unittest tests/test_json_surgery.py

Notes

  • Package name for pip install is mdi-llmkit.
  • Python import package is mdi_llmkit.
  • gpt_submit supports optional warning reporting via warning_callback.

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

mdi_llmkit-1.0.1.tar.gz (33.5 kB view details)

Uploaded Source

Built Distribution

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

mdi_llmkit-1.0.1-py3-none-any.whl (22.0 kB view details)

Uploaded Python 3

File details

Details for the file mdi_llmkit-1.0.1.tar.gz.

File metadata

  • Download URL: mdi_llmkit-1.0.1.tar.gz
  • Upload date:
  • Size: 33.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for mdi_llmkit-1.0.1.tar.gz
Algorithm Hash digest
SHA256 349b48f1f10e42c4a8ca401f260773d81751be849c19d985338f2105477ed7d0
MD5 4c054c88a44cea413da46b0d74a75ee9
BLAKE2b-256 3bceeb19720b7b4670f60fb6f72a6556c95aaef8a9070fec1d779228d8c9168b

See more details on using hashes here.

File details

Details for the file mdi_llmkit-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: mdi_llmkit-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 22.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for mdi_llmkit-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2d1e96750be3ea480f873141963034134ed32834c5a9e72790295e8bd277fbd7
MD5 cec0b01de13d75b5b4caa4da208498df
BLAKE2b-256 e7fd1c7fa2bf8278776ad07a801c8cd89cb22a54b8b3dbb7eb751a749a17423d

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