Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
279 commits
Select commit Hold shift + click to select a range
c26081f
formatting nits
eb8680 Jul 13, 2026
600f058
formatting nits
eb8680 Jul 13, 2026
a44624b
Merge branch 'master' into eb-doctest-synthesis
eb8680 Jul 15, 2026
8c11615
fix failed merge
eb8680 Jul 18, 2026
6b665aa
split into more files
eb8680 Jul 19, 2026
395c51f
Add a library-level harness.py
eb8680 Jul 19, 2026
3b0a01f
Merge branch 'eb-llm-examples' into eb-doctest-synthesis
eb8680 Jul 19, 2026
a3cf92b
standardize harness
eb8680 Jul 19, 2026
b0fd2cd
cleanup examples
eb8680 Jul 19, 2026
234c059
nits
eb8680 Jul 19, 2026
9902b84
fix docstring
eb8680 Jul 19, 2026
2cc4c35
tool choice in harness
eb8680 Jul 19, 2026
d0f0d4b
contextvar
eb8680 Jul 19, 2026
ad8afa8
remove dumb example
eb8680 Jul 19, 2026
bcb5a0c
image
eb8680 Jul 19, 2026
1c5cdc6
fix synthesisfinaltool tool collection bug
eb8680 Jul 20, 2026
969c703
remove hanoi hints
eb8680 Jul 20, 2026
e6f5c71
fix bug
eb8680 Jul 20, 2026
6e64028
nit
eb8680 Jul 20, 2026
ed6de7d
comment about nasty bug
eb8680 Jul 20, 2026
bb67580
Move Encodable to template.py and fix lint
eb8680 Jul 20, 2026
8c7b9b0
nit
eb8680 Jul 20, 2026
4cf864e
revert
eb8680 Jul 20, 2026
958415d
minor
eb8680 Jul 20, 2026
44c251a
Merge branch 'master' into eb-doctest-synthesis
eb8680 Jul 20, 2026
22bd549
repl_history
eb8680 Jul 20, 2026
b244167
Merge branch 'master' into eb-doctest-synthesis
eb8680 Jul 23, 2026
a623637
cleanup
eb8680 Jul 23, 2026
62ebd45
force type checking of submit_solution
eb8680 Jul 23, 2026
fda9049
remove trivial majority_vote
eb8680 Jul 23, 2026
867939d
many fixes
eb8680 Jul 24, 2026
7ecf823
fix no-tool-call error
eb8680 Jul 24, 2026
998c59a
fix prompts
eb8680 Jul 24, 2026
2537af0
fix bug in method templates that synthesize code
eb8680 Jul 24, 2026
4717f2f
fix test bugs
eb8680 Jul 24, 2026
7f9476a
add schema-harness example in world_model_agent.py
eb8680 Jul 24, 2026
a348f8a
add pdb and reasoning-effort options to harness
eb8680 Jul 24, 2026
f349948
help = doc
eb8680 Jul 24, 2026
7ba88ac
explore
eb8680 Jul 24, 2026
9763421
consolidate hanoi
eb8680 Jul 24, 2026
b7d859a
add a summary comment
eb8680 Jul 24, 2026
53dea20
reorganize examples
eb8680 Jul 25, 2026
c944e7d
remove bad example
eb8680 Jul 25, 2026
587fe8a
format
eb8680 Jul 25, 2026
96edcbe
nit
eb8680 Jul 25, 2026
a44f5d8
Merge branch 'master' into eb-doctest-synthesis
eb8680 Jul 26, 2026
23cb7e4
fix nested agent history
eb8680 Jul 26, 2026
61be1b6
port persistent agent (#604)
eb8680 Jul 27, 2026
86d1c51
add more aime examples and consolidate into one file
eb8680 Jul 28, 2026
6730683
Port multi-agent choreography (#607) to asyncio
eb8680 Jul 28, 2026
cb069f1
Move multi-agent example under llm_examples
eb8680 Jul 28, 2026
cca3fb2
Replace the TaskQueue backends with asyncio futures and a Queue
eb8680 Jul 28, 2026
0f23524
Rename multi.py to choreographies.py
eb8680 Jul 28, 2026
2000219
Add StepLog, a write-ahead log of completed steps, for resume
eb8680 Jul 28, 2026
d05cf18
Give reviewers a run_tests tool, so the fix loop turns on a fact
eb8680 Jul 28, 2026
bf500e2
Drop Choreography's handlers argument
eb8680 Jul 28, 2026
8569080
Make step, call and scatter Operations handled by EndpointProjection
eb8680 Jul 28, 2026
b3fd65a
Fold call into step, and inline _first_exception and replay
eb8680 Jul 28, 2026
8635b9d
Remove Choreography.projection
eb8680 Jul 28, 2026
8b2be03
Absorb StepLog into _Steps; Choreography takes a log path
eb8680 Jul 28, 2026
8e154c2
Drop recorded_steps; fold _connect into _Steps; trim the docstring
eb8680 Jul 28, 2026
d894aac
Make Choreography generic in its program's signature, and callable
eb8680 Jul 28, 2026
622979a
Give run_doctests a default rule, and make RestrictedEvalProvider usable
eb8680 Jul 28, 2026
6094ecc
Let the harness choose which provider runs model-authored Python
eb8680 Jul 28, 2026
4539b77
Stop re-validating a callable against synthesis constraints when enco…
eb8680 Jul 28, 2026
c728275
Fix two examples that could not run at all
eb8680 Jul 28, 2026
1335319
Merge branch 'eb-doctest-synthesis' into worktree-restricted-eval-doc…
eb8680 Jul 28, 2026
4f40407
Add test checking resolution of issue #576
eb8680 Jul 29, 2026
3485df4
harness module
eb8680 Jul 29, 2026
7fea052
Renaming, part 1
eb8680 Jul 29, 2026
e1c26b2
nit
eb8680 Jul 29, 2026
2a8d0c6
nit
eb8680 Jul 29, 2026
9a89558
execution module
eb8680 Jul 29, 2026
6a307d5
persistence module
eb8680 Jul 29, 2026
a2d3272
observability.py
eb8680 Jul 29, 2026
aead502
tracing
eb8680 Jul 29, 2026
58eb532
completions
eb8680 Jul 29, 2026
3eaef0c
retrying.py
eb8680 Jul 29, 2026
190f0d6
choreographies.py
eb8680 Jul 29, 2026
7b22406
TenacityRetryer
eb8680 Jul 29, 2026
9ca087d
rendering.py
eb8680 Jul 29, 2026
524372b
encoding.py
eb8680 Jul 29, 2026
6fe53c8
persisting.py
eb8680 Jul 29, 2026
3130fa7
choreographing.py
eb8680 Jul 29, 2026
f4a5189
scoping.py
eb8680 Jul 29, 2026
b1fb146
coding.py
eb8680 Jul 29, 2026
b96d8ae
providing.py
eb8680 Jul 29, 2026
a1945e9
hooks.py
eb8680 Jul 29, 2026
1a52e83
hooks.py
eb8680 Jul 29, 2026
0bfd814
nit
eb8680 Jul 29, 2026
7260ece
scoping
eb8680 Jul 29, 2026
09232b7
unsafe.py
eb8680 Jul 29, 2026
8b85965
restricted.py
eb8680 Jul 29, 2026
563f442
unsafe -> builtin
eb8680 Jul 29, 2026
6514222
restricted
eb8680 Jul 29, 2026
613a89f
nits
eb8680 Jul 29, 2026
8fd3660
executing
eb8680 Jul 29, 2026
a388657
rename
eb8680 Jul 29, 2026
a0697f6
fix tests
eb8680 Jul 29, 2026
aa16590
Add ClaimCheck llm_example: auditing proof against intent (#660)
eb8680 Jul 29, 2026
6ae402d
Sharpen the ClaimCheck corpus; report that the ablation does not sepa…
eb8680 Jul 29, 2026
4e38c73
Add optimize_anything example: reflective Pareto search over typed ar…
eb8680 Jul 29, 2026
cf0d3cb
__main__
eb8680 Jul 29, 2026
1562eac
Run the ablation on older models at temperature 0; record the result
eb8680 Jul 29, 2026
92c22d6
Fix an answer-key leak into every agent's prompt; withdraw the old re…
eb8680 Jul 29, 2026
bb33b7a
Impoverish the naive arm to match upstream; restore the truncated tax…
eb8680 Jul 29, 2026
26aa158
remove task from investigation.py workspace
eb8680 Jul 29, 2026
dc8ed00
Merge branch 'master' into eb-doctest-synthesis
eb8680 Jul 29, 2026
2aed5de
fix failing doctest
eb8680 Jul 29, 2026
b81172a
remove obsolete notebook
eb8680 Jul 29, 2026
ce245cd
Rebuild the corpus around opaque-invariant projections; the gap still…
eb8680 Jul 29, 2026
01855e0
pack: follow the paper's circle-packing setup instead of approximatin…
eb8680 Jul 29, 2026
6ea0d28
Split the optimize_anything example into a package of three scripts
eb8680 Jul 29, 2026
2e5af20
Rebuild the ClaimCheck corpus as a 1:1 port of upstream's Dafny bench…
eb8680 Jul 29, 2026
ef58e66
Fix port fidelity issues found in review, and isolate the batching me…
eb8680 Jul 29, 2026
c955d07
Correct false claims and measurement defects in prompting.py and kern…
eb8680 Jul 29, 2026
4448adf
Fix two more measurement defects; retract the caveat ablation and its…
eb8680 Jul 29, 2026
2138d99
Strip working history from the example; refresh numbers against shipp…
eb8680 Jul 29, 2026
e469905
Add the missing control, and fix what the numbers were claiming
eb8680 Jul 30, 2026
31b9d77
Record the batching measurement; correct the matched-model comparison
eb8680 Jul 30, 2026
e0cf7c5
Neutralise single-pass module text; attribute the strong baselines to…
eb8680 Jul 30, 2026
31a37de
Withdraw the model-capability explanation for the strong baselines
eb8680 Jul 30, 2026
319a881
Reconcile the two-pass deficit against upstream's same-model runs
eb8680 Jul 30, 2026
b4694a1
Remove a rule leak from the naive arm's prompt; verify all three from…
eb8680 Jul 30, 2026
c2067f8
Correct the claim that all three arms differ by signature
eb8680 Jul 30, 2026
4465ef8
Correct the single-pass attribution and the return-type mechanics
eb8680 Jul 30, 2026
d49acae
Note that upstream measures the single-pass/naive contrast at zero
eb8680 Jul 30, 2026
c82aaca
Drop the single-pass arm; the ablation is two-pass against naive
eb8680 Jul 30, 2026
e726536
Cut the example header to a description of the problem and results
eb8680 Jul 30, 2026
75c9896
Measure the outstanding ablations; none of the three claims reproduce
eb8680 Jul 30, 2026
dd6ab94
optimize_anything example
eb8680 Jul 31, 2026
d057a18
Move the formalization examples into llm_examples/autoformalization
eb8680 Jul 31, 2026
fd52fc1
claimcheck
eb8680 Jul 31, 2026
fe99ee2
rename multi_agent -> multi_agent_choreography
eb8680 Jul 31, 2026
b1779ba
move system prompt builders to scoping
eb8680 Jul 31, 2026
77f1b74
move choreographies to examples
eb8680 Jul 31, 2026
e9ef53c
rename files
eb8680 Jul 31, 2026
de773ab
Merge branch 'master' into eb-doctest-synthesis
eb8680 Jul 31, 2026
612b4e5
hide _agent_id as dupe of __agent_id__
eb8680 Aug 6, 2026
3f4e653
Move hooks.py
eb8680 Aug 6, 2026
8f002f6
revert hooks move
eb8680 Aug 7, 2026
2d6e2b2
fix agent_id
eb8680 Aug 7, 2026
c4465aa
litelllmconfigurer
eb8680 Aug 7, 2026
eb6a0c6
simplify exec handler
eb8680 Aug 8, 2026
cc94a93
add sketch of self-contained transaction mechanism
eb8680 Aug 8, 2026
8471efc
propagate change through library code
eb8680 Aug 8, 2026
e3c678a
restore correct history behavior
eb8680 Aug 9, 2026
79a0775
propgate changes to tests
eb8680 Aug 9, 2026
d50d5a2
reinstate cache_control
eb8680 Aug 9, 2026
683e325
contextualization -> context
eb8680 Aug 9, 2026
286a943
observability folder
eb8680 Aug 9, 2026
6d861f9
break out hooks and mypy in execution
eb8680 Aug 9, 2026
c5d8264
synthesis folder
eb8680 Aug 9, 2026
d46a28d
fill out synthesis folder
eb8680 Aug 9, 2026
39b11c5
simplify and localize splicing and synthesis logic
eb8680 Aug 10, 2026
a733d31
fix failing tests
eb8680 Aug 10, 2026
32b1c63
fix last failures
eb8680 Aug 10, 2026
c4af3a0
nits
eb8680 Aug 10, 2026
4afbbe9
decode template bodies in the right context
eb8680 Aug 10, 2026
338eec5
Merge branch 'master' into eb-doctest-synthesis
eb8680 Aug 10, 2026
c75675d
accept a code string for a body
eb8680 Aug 10, 2026
61a4610
lint
eb8680 Aug 10, 2026
3dea519
make call_user not take template
eb8680 Aug 10, 2026
e092716
remove anchor argument
eb8680 Aug 10, 2026
3e89de6
Remove tool_choice and add messages arguments to call_assistant
eb8680 Aug 10, 2026
015486f
explicitly enforce repl-context interaction
eb8680 Aug 10, 2026
2f66b25
tool2name
eb8680 Aug 10, 2026
925ef1d
refactor system prompt assembly
eb8680 Aug 11, 2026
a9336c1
try to fix ci
eb8680 Aug 11, 2026
f5adae2
rename test files
eb8680 Aug 11, 2026
02f40ab
appease ci
eb8680 Aug 11, 2026
eeb4c6c
use names
eb8680 Aug 11, 2026
55b869a
Remove FinalTool and make is_final the purview of handlers
eb8680 Aug 11, 2026
c977e52
Further simplify call_system logic
eb8680 Aug 11, 2026
0552d93
nit
eb8680 Aug 11, 2026
5f751e6
remove some attributes from template and descend into deep Agent in t…
eb8680 Aug 11, 2026
d2e3a07
Make __history__ a MutableSequence rather than an OrderedDict, now th…
eb8680 Aug 11, 2026
57c3754
disentangle tool encoding from synthesis
eb8680 Aug 11, 2026
2880f1a
swap env and response_type arguments in call_assistant to align with …
eb8680 Aug 11, 2026
87dde69
Factor mypy handler out of executors
eb8680 Aug 12, 2026
9dfbfe5
break out doctest and typecheck into validation module
eb8680 Aug 12, 2026
9187381
Add some basic smoke tsts for harness.observability
eb8680 Aug 12, 2026
0b500a5
fix migration
eb8680 Aug 12, 2026
bc5fa7d
fix type_check return type
eb8680 Aug 12, 2026
15bf64b
break out context.py into legibility module
eb8680 Aug 12, 2026
c03d104
durability module combining persistence, retrying, transaction
eb8680 Aug 12, 2026
03bcff0
nits
eb8680 Aug 12, 2026
74de8a4
cleanup mypy.py
eb8680 Aug 12, 2026
c0743a9
Add ty type checking handler and make it default in the harness
eb8680 Aug 12, 2026
aba5957
tweak _tools_in_scope docstring
eb8680 Aug 12, 2026
1db1601
Rename Template to Skill
eb8680 Aug 12, 2026
dc0bdc9
Validate body synthesis outputs
eb8680 Aug 14, 2026
0953b9f
Merge branch 'eb-rename-template-to-skill' into eb-doctest-synthesis
eb8680 Aug 19, 2026
23d370c
AgentLoop and call_agent
eb8680 Aug 19, 2026
b2fe1df
Factor out lexical tool extraction into a handler
eb8680 Aug 19, 2026
21e0235
Make call_user api match call_system
eb8680 Aug 19, 2026
528b98f
provision/
eb8680 Aug 19, 2026
bb653d8
provision/litellm
eb8680 Aug 19, 2026
2161f5a
Rename observabiltiy files
eb8680 Aug 19, 2026
31d6426
lint
eb8680 Aug 19, 2026
82e1677
litellm type error
eb8680 Aug 19, 2026
1b6e80c
fix litellm again
eb8680 Aug 19, 2026
5d8fefb
make harness() into a handler and move cli to __main__
eb8680 Aug 19, 2026
751373f
lint
eb8680 Aug 19, 2026
093cebf
fix examples and docs build
eb8680 Aug 19, 2026
7895f44
nits
eb8680 Aug 20, 2026
e8cdab1
move docstring
eb8680 Aug 20, 2026
af4960a
markdown
eb8680 Aug 20, 2026
5ca7210
example nit
eb8680 Aug 20, 2026
6953ae0
Textgrad
eb8680 Aug 20, 2026
e30cdda
fix #757
eb8680 Aug 20, 2026
bbeb0f5
fix failure handling when multiple too lcalls are generated
eb8680 Aug 20, 2026
e4ba4fc
Fix example nits found by runthrough
eb8680 Aug 20, 2026
a6760a7
fix reasoning effort parameter
eb8680 Aug 20, 2026
b4b62ce
Add REPL-based compaction mechanism
eb8680 Aug 20, 2026
e984d1f
fix reasoning_effort regression
eb8680 Aug 20, 2026
502eb8f
appease mypy
eb8680 Aug 20, 2026
602d37c
fix ci
eb8680 Aug 20, 2026
0e5a49d
switch to ty in tests and fix error from stricter checking
eb8680 Aug 20, 2026
42ac4df
Add code and mixed tool calling modes
eb8680 Aug 21, 2026
c3bfe6c
Better support for polymorphic return types in skills
eb8680 Aug 21, 2026
f3572cf
Allow validators to take context
eb8680 Aug 21, 2026
f1e2cf5
Add skill-argument validation handler
eb8680 Aug 22, 2026
47a396c
docstring clarification
eb8680 Aug 22, 2026
28ba369
Fix soundness of encoding for arbitrary types
eb8680 Aug 22, 2026
9dffd59
fixes
eb8680 Aug 22, 2026
87a7c67
AVO example
eb8680 Aug 22, 2026
459bc84
module_code -> code, submit_solution -> write_and_run_body
eb8680 Aug 23, 2026
9661803
inject
eb8680 Aug 25, 2026
8c1ab98
compaction
eb8680 Aug 25, 2026
57614d1
fix anthropic api invariant
eb8680 Aug 25, 2026
53bfdb8
clear -> compact
eb8680 Aug 25, 2026
077dea2
Fix renderer pathologies
eb8680 Aug 25, 2026
b15a029
Add basics/ examples to CI
eb8680 Aug 25, 2026
3cb3ec1
live
eb8680 Aug 26, 2026
e456f4a
fixture
eb8680 Aug 26, 2026
7e68859
avo tweak
eb8680 Aug 26, 2026
af603b0
fix ci?
eb8680 Aug 26, 2026
a757684
tweak prompt to avoid redefinition
eb8680 Aug 26, 2026
9da2369
finer partitioning in ci
eb8680 Aug 26, 2026
fa58813
remove obsolete markers
eb8680 Aug 26, 2026
b6f78c7
try to retrigger ci
eb8680 Aug 26, 2026
902e0da
acp
eb8680 Aug 28, 2026
b95d96b
lint
eb8680 Aug 28, 2026
450de55
automatic tool construction and agent-ification
eb8680 Aug 28, 2026
726bf8f
rename flags and attempt to fix ci
eb8680 Aug 28, 2026
d84a675
remove some slop and attempt to fix ci again
eb8680 Aug 28, 2026
ef1bff7
remove all manual Agent inheritance from examples
eb8680 Aug 28, 2026
e1da078
clean up auditing/ example
eb8680 Aug 28, 2026
12bd76f
fix embedded resource handling
eb8680 Aug 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .github/workflows/nightly_examples.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Nightly Examples

# Every example in docs/source/llm_examples, run against a live model with its
# own default arguments.
#
# Pull requests get two cheaper checks: the Test workflow proves every example
# still imports and parses its flags (no API key needed), and the LLM
# Integration Tests workflow runs basics/ live. This is where the rest -- the
# agent searches and multi-round pipelines marked nightly_example -- get run,
# nightly, where a flake costs a re-run rather than a blocked PR.

on:
schedule:
# 07:00 UTC, after the US evening and before the European morning.
- cron: "0 7 * * *"
workflow_dispatch:
inputs:
model:
description: "Model to run the examples against"
required: false
default: "gpt-4o-mini"

jobs:
examples:
runs-on: ubuntu-latest
timeout-minutes: 180
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
python-version: "3.13"

- name: Set up Python
run: uv python install

- name: Install Python dependencies
run: uv sync --all-extras --dev

# No -m filter: the nightly is the run that covers everything. Each
# example is a subprocess, so xdist gets real parallelism across them.
- name: Run every example
env:
EFFECTFUL_LLM_MODEL: ${{ github.event.inputs.model || 'gpt-4o-mini' }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
uv run pytest tests/test_handlers_llm_examples.py -v -n logical
4 changes: 0 additions & 4 deletions .github/workflows/publish_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,6 @@ jobs:
- name: Build docs
run: cd docs && uv run make html

- name: Generate LLM agent reference markdown
run: |
uv run jupyter nbconvert --to markdown docs/source/llm.ipynb --output llm.md --output-dir docs/build/html/

- name: Setup Pages
uses: actions/configure-pages@v4

Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ jobs:
- name: numpyro
paths: tests/test_handlers_numpyro*.py
- name: llm
paths: tests/test_handlers_llm*.py
paths: tests/test_handlers_llm*.py -k "not mypy"
- name: llm-mypy
paths: tests/test_handlers_llm*.py -k "mypy"
- name: examples
paths: tests/test_examples_*.py
- name: core
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/test_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,3 @@ jobs:
- name: Build docs
run: |
cd docs && uv run make html

- name: Generate LLM agent reference markdown
run: |
uv run jupyter nbconvert --to markdown docs/source/llm.ipynb --output llm.md --output-dir docs/build/html/
36 changes: 35 additions & 1 deletion .github/workflows/test_llm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@ jobs:
test-llm:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.13", "3.14"]
model: ["gpt-4o-mini"]
mypy: ["mypy", "not mypy"]
name: "test-llm (py ${{ matrix.python-version }}, ${{ matrix.mypy }})"
steps:
- uses: actions/checkout@v4

Expand All @@ -37,4 +40,35 @@ jobs:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
uv run pytest tests/test_handlers_llm_provider.py tests/test_handlers_llm_tool_calling_poem.py tests/test_handlers_llm_tool_calling_book.py tests/test_handlers_llm_encoding.py -v --tb=short
uv run pytest tests/test_handlers_llm_* -v -n logical \
-m "not example" -k "${{ matrix.mypy }}"

# The basics/ examples, run live the way a reader runs them.
examples:
runs-on: ubuntu-latest
timeout-minutes: 30
name: "basics examples (live)"
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
python-version: "3.13"

- name: Set up Python
run: uv python install

- name: Install Python dependencies
run: |
uv sync --all-extras --dev

- name: Run the basics examples
env:
EFFECTFUL_LLM_MODEL: gpt-4o-mini
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
uv run pytest tests/test_handlers_llm_examples.py -v -n logical \
-m "not nightly_example"
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ Claude Code, Cursor, Copilot) to:
https://basisresearch.github.io/effectful/llm.md

This file is auto-generated from the `LLM tutorial notebook <https://basisresearch.github.io/effectful/llm.html>`_
and contains complete API usage examples for templates, tool calling,
and contains complete API usage examples for skills, tool calling,
structured output, retries, and more.

Learn More
Expand Down
6 changes: 6 additions & 0 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@
# Enable documentation inheritance
autodoc_inherit_docstrings = True

# Render the ``__init__`` docstring alongside the class docstring. The LLM
# harness handlers rely on this split: a handler's class docstring is injected
# into the model's system prompt, so constructor documentation -- which only
# the caller of ``Handler(...)`` can act on -- lives on ``__init__`` instead.
autoclass_content = "both"

# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
Expand Down
167 changes: 152 additions & 15 deletions docs/source/effectful.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,35 +47,172 @@ LLM
:members:
:undoc-members:

Template
""""""""
Types
"""""

.. automodule:: effectful.handlers.llm.template
.. automodule:: effectful.handlers.llm.types
:members:
:undoc-members:

Encoding
""""""""
Harness
"""""""

.. automodule:: effectful.handlers.llm.encoding
.. automodule:: effectful.handlers.llm.harness
:members:
:undoc-members:

Completions
"""""""""""
.. automodule:: effectful.handlers.llm.completions
Command-line launcher
~~~~~~~~~~~~~~~~~~~~~

.. automodule:: effectful.handlers.llm.harness.__main__
:members:
:undoc-members:

Evaluation
""""""""""
.. automodule:: effectful.handlers.llm.evaluation
Hooks
~~~~~

.. automodule:: effectful.handlers.llm.harness.hooks
:members:
:undoc-members:


Serialization
~~~~~~~~~~~~~

.. automodule:: effectful.handlers.llm.harness.serialization
:members:
:undoc-members:

Provision
~~~~~~~~~

.. automodule:: effectful.handlers.llm.harness.provision
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.provision.litellm
:members:
:undoc-members:

Legibility
~~~~~~~~~~

.. automodule:: effectful.handlers.llm.harness.legibility
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.legibility.framework
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.legibility.lexical
:members:
:undoc-members:

Execution
~~~~~~~~~

.. automodule:: effectful.handlers.llm.harness.execution
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.execution.hooks
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.execution.builtin
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.execution.restricted
:members:
:undoc-members:
:private-members:

Validation
~~~~~~~~~~

.. automodule:: effectful.handlers.llm.harness.validation
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.validation.hooks
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.validation.pydantic
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.validation.mypy
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.validation.ty
:members:
:undoc-members:

Synthesis
~~~~~~~~~

.. automodule:: effectful.handlers.llm.harness.synthesis
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.synthesis.snippet
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.synthesis.function
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.synthesis.body
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.synthesis.toolcall
:members:
:undoc-members:

Durability
~~~~~~~~~~

.. automodule:: effectful.handlers.llm.harness.durability
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.durability.transaction
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.durability.retrying
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.durability.persistence
:members:
:undoc-members:

Observability
~~~~~~~~~~~~~

.. automodule:: effectful.handlers.llm.harness.observability
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.observability.rich
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.observability.dump
:members:
:undoc-members:

.. automodule:: effectful.handlers.llm.harness.observability.langfuse
:members:
:undoc-members:


Jax
^^^

Expand Down
7 changes: 0 additions & 7 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,6 @@ Table of Contents
getting_started
introduction
named_tensor_notation
llm

.. tip::

**For AI coding agents:** A standalone Markdown version of the LLM guide is
available at `llm.md <llm.md>`_ — point your agent there for a complete
reference on building effectful LLM applications.

.. toctree::
:maxdepth: 1
Expand Down
Loading
Loading