Skip to main content

Framework-agnostic bridge between agent adapters and the Astropods messaging service

Project description

astropods-adapter-core

Framework-agnostic bridge between Python agents and the Astropods messaging service.

Installation

pip install astropods-adapter-core

Requires Python 3.10+.

Usage

If you're using a supported framework, use the pre-built adapter package instead (e.g. astropods-adapter-langchain). Use this package directly to connect a custom or unsupported framework.

Create a class with name, stream, and get_config, then call serve():

from astropods_adapter_core import StreamHooks, StreamOptions, serve

class MyAdapter:
    name = "My Agent"

    async def stream(self, prompt: str, hooks: StreamHooks, options: StreamOptions) -> None:
        try:
            hooks.on_chunk("Hello!")
            hooks.on_finish()
        except Exception as e:
            hooks.on_error(e)

    def get_config(self) -> dict:
        return {"system_prompt": "You are a helpful assistant.", "tools": []}

serve(MyAdapter())

serve() blocks until SIGINT or SIGTERM. Under ast dev, GRPC_SERVER_ADDR is injected automatically.

API

AgentAdapter protocol

Member Description
name: str Display name used in logs and registration
async stream(prompt, hooks, options) Stream a response, invoking hooks as the agent progresses
get_config() -> dict Return {"system_prompt": str, "tools": [...]} for playground display

StreamHooks

Call these inside stream() as the agent produces output:

Method When to call
on_chunk(text) Each text token or fragment from the LLM
on_status_update({"status": "..."}) Agent state change — valid values: THINKING, SEARCHING, GENERATING, PROCESSING, ANALYZING, CUSTOM
on_finish() Response complete — call exactly once per request
on_error(exception) Error occurred — call instead of on_finish

For CUSTOM status, include "custom_message" in the dict:

hooks.on_status_update({"status": "CUSTOM", "custom_message": "Fetching data..."})

StreamOptions

Per-request context passed to stream():

Field Description
conversation_id Stable ID for the conversation thread
user_id ID of the user who sent the message

serve(adapter, options?)

Connects the adapter to the messaging service and blocks until shutdown.

from astropods_adapter_core import ServeOptions, serve

# Override the gRPC address (default: GRPC_SERVER_ADDR env var or localhost:9090)
serve(adapter, ServeOptions(server_address="astro-messaging:9090"))

MessagingBridge

serve() is a thin wrapper around MessagingBridge. Use it directly if you need lifecycle control:

import asyncio
from astropods_adapter_core import MessagingBridge

bridge = MessagingBridge(adapter)
asyncio.run(bridge.start())

Project details


Download files

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

Source Distribution

astropods_adapter_core-0.3.0.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

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

astropods_adapter_core-0.3.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file astropods_adapter_core-0.3.0.tar.gz.

File metadata

  • Download URL: astropods_adapter_core-0.3.0.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for astropods_adapter_core-0.3.0.tar.gz
Algorithm Hash digest
SHA256 9e5bbad1654ac2295fe70d06fc8938297025c6d3cbd18ef1ed77b5afb8eed05b
MD5 d6f0f5cb5197b7e90931025df0f1841f
BLAKE2b-256 f4f42257064aeb23c3739709516e17dabd0f4742a5e822e2bbcc44c47680561e

See more details on using hashes here.

Provenance

The following attestation bundles were made for astropods_adapter_core-0.3.0.tar.gz:

Publisher: publish-pypi-core.yml on astropods/adapters

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file astropods_adapter_core-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for astropods_adapter_core-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 385bff9995caa0d9752ff7776c8514702e0fbd8f22f6d2623fece94c80309034
MD5 f8a28d9c2acf9725a11e4f520a14e666
BLAKE2b-256 89c2408f83923cd981f99f2dadf47b3b4d999fbc935267e0c9057dba0aa75139

See more details on using hashes here.

Provenance

The following attestation bundles were made for astropods_adapter_core-0.3.0-py3-none-any.whl:

Publisher: publish-pypi-core.yml on astropods/adapters

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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