Skip to main content

Helper functions for solveit dialogs

Project description

dialoghelper

A Python library for programmatic dialog manipulation in Solveit, fast.ai's Dialog Engineering web application. It provides both user-callable functions and AI-accessible tools for creating, reading, updating, and managing dialog messages.

What is Solveit?

Solveit is a "Dialog Engineering" web application that combines interactive code execution with AI assistance. Unlike ChatGPT (pure chat) or Jupyter (pure code), Solveit merges both paradigms into a single workspace.

Core Concepts

  • Instance: A persistent Linux container with your files and running kernels. Each user can have multiple instances.
  • Dialog: An .ipynb file containing messages. Like a Jupyter notebook, but with AI integration. Each open dialog runs its own Python kernel.
  • Message: The fundamental unit—similar to a Jupyter cell, but with three types:
Type Purpose Example
code Python execution print("hello")
note Markdown documentation # My Notes
prompt AI interaction "Explain this function"

How AI Context Works

When you send a prompt to the AI:

  1. All messages above the current prompt are collected
  2. Messages marked as "hidden" (skipped=True) are excluded
  3. If context exceeds the model limit, oldest non-pinned messages are dropped
  4. The AI sees code, outputs, notes, and previous prompts/responses

Key implications:

  • Working at the bottom of a dialog = more context (all messages above)
  • Working higher up = less context
  • Pinning a message (p key) keeps it in context even when truncation occurs

Tools: AI-Callable Functions

Solveit lets the AI call Python functions directly. Users declare tools in messages using & followed by backticks:

&`my_function`                    # Expose single tool
&`[func1, func2, func3]`          # Expose multiple tools

When the AI needs to use a tool, Solveit executes it in the kernel and returns the result.

Installation

The latest version is always pre-installed in Solveit. To manually install (not recommended):

pip install dialoghelper

What is dialoghelper?

dialoghelper is a programmatic interface to Solveit dialogs. It enables:

  • Dialog manipulation: Add, update, delete, and search messages
  • AI tool integration: Expose functions as tools the AI can call
  • Context generation: Convert folders, repos, and symbols into AI context
  • Screen capture: Capture browser screenshots for AI analysis
  • Tmux integration: Read terminal buffers from tmux sessions

Modules

Module Source Notebook Description
core nbs/00_core.ipynb Core dialog manipulation (add/update/delete messages, search, context helpers)
capture nbs/01_capture.ipynb Screen capture functionality for AI vision
inspecttools nbs/02_inspecttools.ipynb Symbol inspection (symsrc, getval, getdir, etc.)
tmux nbs/03_tmux.ipynb Tmux buffer reading tools
stdtools Re-exports all tools from dialoghelper + fastcore.tools

Solveit Tools

Tools are functions the AI can call directly during a conversation. A function is usable as a tool if it has:

  1. Type annotations for ALL parameters
  2. A docstring describing what it does
# Valid tool
def greet(name: str) -> str:
    "Greet someone by name"
    return f"Hello, {name}!"

# Not a tool (missing type annotation)
def greet(name):
    "Greet someone by name"
    return f"Hello, {name}!"

# Not a tool (missing docstring)
def greet(name: str) -> str: return f"Hello, {name}!"

Exposing Tools to the AI

In a Solveit dialog, reference tools using & followed by backticks:

&`greet`                           # Single tool
&`[add_msg, update_msg, del_msg]`  # Multiple tools

Tool Info Functions

These functions add notes to your dialog listing available tools:

Function Lists tools from
tool_info() dialoghelper.core
fc_tool_info() fastcore.tools (rg, sed, view, create, etc.)
inspect_tool_info() dialoghelper.inspecttools
tmux_tool_info() dialoghelper.tmux

Tools vs Programmatic Functions

Some functions are designed for AI tool use; others are meant to be called directly from code:

AI Tools Programmatic Use
add_msg, update_msg, del_msg
find_msgs, read_msg, view_dlg call_endp (raw endpoint access)
symsrc, getval, getdir resolve (returns actual Python object)

Usage Examples

from dialoghelper import *

# Add a note message
add_msg("Hello from code!", msg_type='note')

# Add a code message
add_msg("print('Hello')", msg_type='code')

# Search for messages
results = find_msgs("pattern", msg_type='code')

# View entire dialog structure
print(view_dlg())

# Generate context from a folder
ctx_folder('.', types='py', max_total=5000)

Development: nbdev Project Structure

dialoghelper is an nbdev project. Notebooks are the source of truth—the .py files are auto-generated.

Notebook ↔ Python File Mapping

Notebook Generated File
nbs/00_core.ipynb dialoghelper/core.py
nbs/01_capture.ipynb dialoghelper/capture.py
nbs/02_inspecttools.ipynb dialoghelper/inspecttools.py
nbs/03_tmux.ipynb dialoghelper/tmux.py

Workflow

  1. Edit notebooks in nbs/
  2. Run nbdev_export() to generate .py files
  3. Never edit .py files directly—they'll be overwritten

License

Apache 2.0

Project details


Release history Release notifications | RSS feed

This version

0.2.1

Download files

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

Source Distribution

dialoghelper-0.2.1.tar.gz (31.8 kB view details)

Uploaded Source

Built Distribution

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

dialoghelper-0.2.1-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

File details

Details for the file dialoghelper-0.2.1.tar.gz.

File metadata

  • Download URL: dialoghelper-0.2.1.tar.gz
  • Upload date:
  • Size: 31.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for dialoghelper-0.2.1.tar.gz
Algorithm Hash digest
SHA256 4b74260327a011e72304ba866dc6c2d6a6c3d0c8e525a7ebc2557cfa9f575758
MD5 c4421a64532c40304311c0e800ea31d6
BLAKE2b-256 c7b36a745648e9670d7a35d2bfa5ff9d82c8e9b4fe36ef77d9017d933793ef47

See more details on using hashes here.

File details

Details for the file dialoghelper-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: dialoghelper-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 31.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for dialoghelper-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e69fed54ff59052583a95ae4f29685c277005712e34160fdc0b314c462dee47e
MD5 fe93c48a61a716372a4b53575ced2ce5
BLAKE2b-256 1353e505ca8fdc7581105c4ce4ff01a66488afaaf4ca590a409339fe0829e808

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