Skip to content

v0.9.0

Choose a tag to compare

@vijit-lark vijit-lark released this 27 Jul 21:02

Highlights

  • Tool prompt snippets are now rendered as a named <ToolGuidance> block. Each active tool's guidance is paired with the LLM-visible function name(s) it covers and rendered as <Tool name="...">text</Tool> entries wrapped in one <ToolGuidance> block inside the system prompt's <Tools> section -- so the model knows exactly which functions each snippet is about, instead of reading an anonymous bullet list. Local tools name their direct functions (end_session, web_search/web_fetch, send_email_to_user); MCP tools (browser, Notion, X) pair their snippet with every function their server exposes.
  • Breaking: the AgentConfig.system_instruction callable contract changed. A callable override now receives the single pre-rendered <ToolGuidance> block as a str (previously a list[str] of raw snippets), and "" when no tools contribute guidance -- so you can embed it unconditionally. build_system_instruction takes the same pre-rendered block.
  • New public API. ToolGuidance and render_tool_guidance are exported from the package root; ToolBundle.instructions now carries ToolGuidance entries instead of plain strings (breaking for custom tools that construct bundles -- see the updated examples/custom_brain_and_tool.py).
  • Fixed two typos in the end-session prompt snippet, and synced the drifted openlily.__version__ with pyproject.

Upgrading: if you pass a callable system_instruction or build ToolBundles with prompt snippets, update to the new shapes: the callable receives one pre-rendered str, and bundle snippets become ToolGuidance(tool_names=(...), text=...). String/None system_instruction configs are unaffected.

Install

pip install 'openlily @ git+https://github.com/getlark/openlily.git@v0.9.0#subdirectory=server'