Skip to content

Releases: OpenSymbolicAI/core-py

v0.8.0

11 Jun 00:09

Choose a tag to compare

What's New

Breaking: plans must end with an explicit return statement

Plans now specify their result via an explicit return <expr> instead of the implicit "last assigned variable is the result" convention. This is consistent across all three blueprints (PlanExecute, DesignExecute, GoalSeeking).

# Before — implicit last-variable-as-result
result = add(a, b)

# Now — explicit return
result = add(a, b)
return result
  • PlanExecute: validation requires the plan to end with a return; the return is its own execution step (step counts increase by one) and ExecutionResult.value_name is now "".
  • DesignExecute: validation requires a return anywhere (top-level or nested for early returns); value_name is "return" when a return fires.
  • GoalSeeking: inherits the above; step-plan prompts updated accordingly.
  • Prompts for all blueprints updated to instruct ending with return.

Migration: append return <result> to any hand-written plans. Plans without a return statement are now rejected by validation.

Fixes & maintenance

  • Add retry logic with exponential backoff to all LLM providers
  • Simplify the PyPI readme

Full Changelog: v0.7.0...v0.8.0

v0.7.0

13 Mar 04:39
e34c1bb

Choose a tag to compare

What's New

PromptProvider — select which primitives and decompositions appear in prompts

New PromptProvider base class that controls which primitives and decompositions the LLM sees in the prompt. Subclass it and override select_primitives / select_decompositions to filter by rich metadata (PrimitiveInfo, DecompositionInfo) including docstrings, read_only, deterministic, parameters, return types, and source code.

from opensymbolicai import PromptProvider, PrimitiveInfo, PlanExecuteConfig

class ReadOnlyOnly(PromptProvider):
    def select_primitives(self, available: list[PrimitiveInfo]) -> list[str]:
        return [p.name for p in available if p.read_only]

config = PlanExecuteConfig(prompt_provider=ReadOnlyOnly())
  • Only affects prompt construction — all primitives remain available for execution
  • Works across all blueprints: PlanExecute, DesignExecute, GoalSeeking
  • New exported models: PromptProvider, PrimitiveInfo, DecompositionInfo, ParameterInfo

Full Changelog: v0.6.2...v0.7.0

v0.6.2

03 Mar 21:17
093d4f3

Choose a tag to compare

What's Changed

New Features

  • Anonymous usage telemetry via PostHog (feat: add anonymous usage telemetry)
  • API key auth support for observability HTTP transport (feat: add API key auth support to observability HTTP transport)

Bug Fixes

  • Pair LLM request/response into single deferred spans for correct trace duration (fix: pair LLM request/response into single deferred spans)
  • Allow isinstance in plan execution — removed from DANGEROUS_BUILTINS and added to DEFAULT_ALLOWED_BUILTINS, with allowed_builtins now checked before the blocklist so user config can override (fix: allow isinstance in plan execution)

Full Changelog: v0.5.1...v0.6.2

v0.5.1

25 Feb 05:23
7520337

Choose a tag to compare

What's Changed

Features

  • Observability framework — new tracing and event transport system (FileTransport, HttpTransport, InMemoryTransport)
  • GoalSeeking observability instrumentation with session_id support
  • Determinism metadata, signature hashing, and prompt splitting APIs
  • Prompt section demarcation markers for splittable LLM prompts
  • Auto-document Pydantic BaseModel schemas in primitive prompts

Docs & Maintenance

  • Improved PyPI discoverability and added benchmark results to README
  • Updated README with DesignExecute, GoalSeeking, and exception documentation

Full Changelog: v0.4.1...v0.5.1

v0.4.1

19 Feb 00:08

Choose a tag to compare

What's in this release

OpenSymbolicAI Core — a Python framework for building symbolic AI agents where LLMs plan and typed Python functions execute.

Blueprints

  • PlanExecute — LLM generates a plan, runtime executes it against @primitive functions
  • DesignExecute — control flow support (loops, conditionals) for multi-step workflows
  • GoalSeeking — iterative goal-directed agents with built-in evaluation and retry

Highlights

  • Symbolic firewall: LLM never touches raw data, only function signatures
  • All outputs are validated Pydantic models
  • Full execution tracing with before/after state snapshots
  • Multi-provider LLM support (Ollama, OpenAI, Anthropic, Fireworks, Groq)
  • Checkpoint system for distributed execution and state persistence

Examples

  • Scientific calculator with 120-intent benchmark suite
  • Function optimizer using GoalSeeking
  • Shopping cart using DesignExecute

Benchmark Results (calculator, 120 intents)

Model Accuracy
gpt-oss:20b 100%
qwen3:1.7b 100%
qwen3:8b 100%
gemma3:4b 94%
phi4:14b 80%

Full documentation: https://opensymbolicai.github.io/core-py/