Skip to main content

aidialog

aidialog provides the Dialog/Message model used by solveit and the fastai AI tooling ecosystem. An AI dialog is a Jupyter notebook whose cells are messages: notes, runnable code, and prompts with replies. Five modules build on each other:

  • aidialog.msg_parts: the canonical Msg/Part chat message model and its wire text form
  • aidialog.dialog: the core Dialog/Message model, including plain-text rendering of Jupyter outputs
  • aidialog.ipynb: reading and writing dialogs as .ipynb files
  • aidialog.hist: conversions between dialogs, chat histories, and formatted replies
  • aidialog.dlgskill: search and editing tools for dialogs and notebooks, registered as a pyskill

Provider session files (Claude Code transcripts, Codex rollouts) and conversation compaction live in llmsurgery.

The theory

A dialog is a conversation between a human, an AI, and an interpreter. Each message type addresses one of them and expects a certain kind of answer:

  • A prompt asks the AI a question and holds its reply.
  • A code message gives the interpreter source and holds its outputs.
  • A note is read by everyone and answered by nobody.
  • A raw message addresses no one. It is inert matter the conversation carries along.

A reply may itself contain runnable code with results, so a whole dialog can live inside one message. reply2dlg opens a reply up as a dialog and dlg2reply puts it back.

Dialogs and Jupyter notebooks both serialize to the ipynb format, but they are not the same thing. A notebook has cells. A dialog has messages. Messages can be prompts, which notebooks cannot express, and they make structure explicit that notebooks leave implicit. E.g a heading opens a section that runs to the next heading of the same level; an export directive marks the code that belongs to a module. The shared file format means the same tools read both. The word tells you which layer you are on. File-level tools such as fastcore.nbio and exhash speak of cells and notebooks. Everything in this library speaks of messages and dialogs.

The Dialog is the center of the library. Everything else is a projection of it. A storage projection must preserve everything that means something. What it does not understand it carries verbatim in metadata, and what is broken it heals rather than rejects. A transmission projection normalizes on purpose, and what it drops is written into its contract. A display projection only goes one way. The rule is to convert in, edit at the center, and project out. The function names say the same thing. Every converter has dlg on exactly one side.

projection contract in out
ipynb file storage, pragmatically lossless read_ipynb write_ipynb
Claude Code session storage sess2dlg dlg2sess
Codex thread storage (write-only so far) dlg2thread
canonical chat (Msg/Part) transmission, normalizing chat2dlg dlg2chat
hist (live call input) transmission, one-way dlg2hist
a prompt’s reply self-similar reply2dlg dlg2reply
XML views display, one-way view_dlg, msg2xml

The session codecs (in llmsurgery) route through chat on their way to the wire: ant’s dlg2msgs and oai’s dlg2items are each denorm_msgs(dlg2chat(...)).

Usage

Installation

Install latest from the GitHub repository:

$ pip install git+https://github.com/AnswerDotAI/aidialog.git

or from pypi:

$ pip install aidialog

Documentation

Documentation can be found hosted on this GitHub repository’s pages.

How to use

A quick taste - create a dialog, add a message, and view it as concise XML:

from aidialog.dlgskill import *
import tempfile

p = tempfile.mkdtemp() + '/demo.ipynb'
create_dlg(p, '## A tiny dialog', 'note')
add_msg('6*7', after=find_msgs(dlg=p)[0].id, dlg=p)
view_dlg(p)
<dialog name="demo"><markdown id="470ae519">## A tiny dialog</markdown><code id="c836ce0c">6*7</code></dialog>

Download files

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

Source Distribution

aidialog-0.0.9.tar.gz (51.4 kB view details)

Uploaded Source

Built Distribution

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

aidialog-0.0.9-py3-none-any.whl (52.2 kB view details)

Uploaded Python 3

File details

Details for the file aidialog-0.0.9.tar.gz.

File metadata

  • Download URL: aidialog-0.0.9.tar.gz
  • Upload date:
  • Size: 51.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.2

File hashes

Hashes for aidialog-0.0.9.tar.gz
Algorithm Hash digest
SHA256 c8265be7f7ef5eaac6b8dfaf0bb9ad989cc6aef1a0f7fa32f154181cbb204a41
MD5 7bde9f723a265d8b24c29e74d5c9a210
BLAKE2b-256 455f6073c368ef2dafb97cbc9f305acc7b22c4857300cb6ed76dff4765fba8cf

See more details on using hashes here.

File details

Details for the file aidialog-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: aidialog-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 52.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.2

File hashes

Hashes for aidialog-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 eeaa61e6d300b48ef8a74e459c05f065636386c2930587d319831a32735382df
MD5 6cdade8570f593eca8e0c4dc31a9236c
BLAKE2b-256 2a0eafd165fa81092d8617f6251a321f0c8efe279c225b78e06e3fd5fb8281ff

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