Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 0 additions & 3 deletions agents/canvas/src/canvas/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
from agentstack_sdk.a2a.types import AgentArtifact
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from agentstack_sdk.server.middleware.platform_auth_backend import PlatformAuthBackend
from openai import AsyncOpenAI
from openai.types.chat import ChatCompletionMessageParam

Expand Down Expand Up @@ -145,8 +144,6 @@ def serve():
server.run(
host=os.getenv("HOST", "127.0.0.1"),
port=int(os.getenv("PORT", 10002)),
configure_telemetry=True,
auth_backend=PlatformAuthBackend(),
)
except KeyboardInterrupt:
pass
Expand Down
5 changes: 0 additions & 5 deletions agents/chat/src/chat/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@
from agentstack_sdk.a2a.types import AgentArtifact, AgentMessage
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from agentstack_sdk.server.middleware.platform_auth_backend import PlatformAuthBackend
from agentstack_sdk.server.store.platform_context_store import PlatformContextStore
from beeai_framework.adapters.agentstack.backend.chat import AgentStackChatModel
from beeai_framework.agents.requirement import RequirementAgent
from beeai_framework.agents.requirement.events import (
Expand Down Expand Up @@ -289,9 +287,6 @@ def serve():
server.run(
host=os.getenv("HOST", "127.0.0.1"),
port=int(os.getenv("PORT", 8000)),
configure_telemetry=True,
context_store=PlatformContextStore(),
auth_backend=PlatformAuthBackend(),
)
except KeyboardInterrupt:
pass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ async def content_builder_agent(

def serve():
try:
server.run(host=os.getenv("HOST", "127.0.0.1"), port=int(os.getenv("PORT", 10003)), configure_telemetry=True)
server.run(host=os.getenv("HOST", "127.0.0.1"), port=int(os.getenv("PORT", 10003)))
except KeyboardInterrupt:
pass

Expand Down
3 changes: 0 additions & 3 deletions agents/form/src/form/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
FormServiceExtensionSpec,
)
from agentstack_sdk.server import Server
from agentstack_sdk.server.middleware.platform_auth_backend import PlatformAuthBackend
from pydantic import BaseModel

agent_detail_extension_spec = agentstack_sdk.a2a.extensions.AgentDetailExtensionSpec(
Expand Down Expand Up @@ -119,8 +118,6 @@ def serve():
server.run(
host=os.getenv("HOST", "127.0.0.1"),
port=int(os.getenv("PORT", 10001)),
configure_telemetry=True,
auth_backend=PlatformAuthBackend(),
)
except KeyboardInterrupt:
pass
Expand Down
5 changes: 0 additions & 5 deletions agents/rag/src/rag/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@
from agentstack_sdk.a2a.types import AgentArtifact, AgentMessage
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from agentstack_sdk.server.middleware.platform_auth_backend import PlatformAuthBackend
from agentstack_sdk.server.store.platform_context_store import PlatformContextStore
from beeai_framework.adapters.agentstack.backend.chat import AgentStackChatModel
from beeai_framework.agents.requirement import RequirementAgent
from beeai_framework.agents.requirement.utils._tool import FinalAnswerTool
Expand Down Expand Up @@ -324,9 +322,6 @@ def serve():
server.run(
host=os.getenv("HOST", "127.0.0.1"),
port=int(os.getenv("PORT", 8000)),
configure_telemetry=True,
context_store=PlatformContextStore(),
auth_backend=PlatformAuthBackend(),
)
except KeyboardInterrupt:
pass
Expand Down
3 changes: 1 addition & 2 deletions apps/agentstack-sdk-py/examples/citation_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
from agentstack_sdk.a2a.types import AgentMessage
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from agentstack_sdk.server.store.platform_context_store import PlatformContextStore

server = Server()

Expand Down Expand Up @@ -69,7 +68,7 @@ async def example_agent(

def run():
server.run(
host=os.getenv("HOST", "127.0.0.1"), port=int(os.getenv("PORT", 8000)), context_store=PlatformContextStore()
host=os.getenv("HOST", "127.0.0.1"), port=int(os.getenv("PORT", 8000))
)


Expand Down
3 changes: 1 addition & 2 deletions apps/agentstack-sdk-py/examples/citation_agent_artifact.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
from agentstack_sdk.a2a.types import AgentArtifact
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from agentstack_sdk.server.store.platform_context_store import PlatformContextStore

server = Server()

Expand Down Expand Up @@ -71,7 +70,7 @@ async def example_agent(

def run():
server.run(
host=os.getenv("HOST", "127.0.0.1"), port=int(os.getenv("PORT", 8002)), context_store=PlatformContextStore()
host=os.getenv("HOST", "127.0.0.1"), port=int(os.getenv("PORT", 8002))
)


Expand Down
2 changes: 0 additions & 2 deletions apps/agentstack-sdk-py/examples/history_framework.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
from agentstack_sdk.a2a.types import AgentMessage
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from agentstack_sdk.server.store.platform_context_store import PlatformContextStore

server = Server()

Expand Down Expand Up @@ -91,7 +90,6 @@ def run():
server.run(
host=os.getenv("HOST", "127.0.0.1"),
port=int(os.getenv("PORT", "8000")),
context_store=PlatformContextStore(), # Enable persistent storage
)


Expand Down
2 changes: 0 additions & 2 deletions apps/agentstack-sdk-py/examples/oauth.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
from agentstack_sdk.a2a.types import AgentMessage
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from agentstack_sdk.server.store.platform_context_store import PlatformContextStore

server = Server()

Expand Down Expand Up @@ -113,7 +112,6 @@ def run():
server.run(
host=os.getenv("HOST", "127.0.0.1"),
port=int(os.getenv("PORT", "8000")),
context_store=PlatformContextStore(), # Enable persistent storage
)


Expand Down
3 changes: 1 addition & 2 deletions apps/agentstack-sdk-py/examples/trajectory_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
from agentstack_sdk.a2a.types import AgentMessage
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from agentstack_sdk.server.store.platform_context_store import PlatformContextStore

server = Server()

Expand Down Expand Up @@ -222,7 +221,7 @@ def extract_entities(text):

def run():
server.run(
host=os.getenv("HOST", "127.0.0.1"), port=int(os.getenv("PORT", 8000)), context_store=PlatformContextStore()
host=os.getenv("HOST", "127.0.0.1"), port=int(os.getenv("PORT", 8000))
)


Expand Down
9 changes: 6 additions & 3 deletions apps/agentstack-sdk-py/src/agentstack_sdk/server/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
from agentstack_sdk.server.agent import Agent, AgentFactory
from agentstack_sdk.server.agent import agent as agent_decorator
from agentstack_sdk.server.store.context_store import ContextStore
from agentstack_sdk.server.store.memory_context_store import InMemoryContextStore
from agentstack_sdk.server.telemetry import configure_telemetry as configure_telemetry_func
from agentstack_sdk.server.utils import cancel_task
from agentstack_sdk.types import SdkAuthenticationBackend
Expand Down Expand Up @@ -72,7 +71,7 @@ async def serve(
self,
*,
configure_logger: bool = True,
configure_telemetry: bool = False,
configure_telemetry: bool = True,
self_registration: bool = True,
self_registration_id: str | None = None,
task_store: TaskStore | None = None,
Expand Down Expand Up @@ -140,7 +139,11 @@ async def serve(
if not self._agent_factory:
raise ValueError("Agent is not registered")

context_store = context_store or InMemoryContextStore()
from agentstack_sdk.server.middleware.platform_auth_backend import PlatformAuthBackend
from agentstack_sdk.server.store.platform_context_store import PlatformContextStore

context_store = context_store if context_store is not None else PlatformContextStore()
auth_backend = auth_backend if auth_backend is not None else PlatformAuthBackend()
self._agent = self._agent_factory(context_store.modify_dependencies)
card_url = url and url.strip()
self._agent.card.url = card_url.rstrip("/") if card_url else f"http://{host}:{port}"
Expand Down
10 changes: 5 additions & 5 deletions docs/development/agent-integration/multi-turn.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ When building conversational AI agents, one of the key requirements is maintaini
| **await context.store(input)** | Stores current user message in conversation history. Storage of messages must be explicitly requested|
| **await context.store(response)** | Stores agent’s responses in conversation history, and must be explicitly requested |
| **context: RunContext)** | Sets up a RunContext instance for storing and accessing the conversation history |
| **context_store=PlatformContextStore()** | Configures server to use the platform’s persistent context store to maintain conversation history across agent restarts |
| **context_store** | Configures the context store used to persist conversation history. Defaults to `PlatformContextStore()` for persistent storage across agent restarts. |


## Simple History Access Example
Expand Down Expand Up @@ -306,23 +306,23 @@ This advanced example demonstrates several key concepts:

### Persistent Storage Example

By default, conversation history is stored in memory and is lost when the agent process restarts. For production applications, you'll want to use persistent context storage to maintain conversation history across agent restarts. The `PlatformContextStore` automatically handles conversation persistence, ensuring that users can continue their conversations even after agent restarts or deployments.
Conversation history is automatically persisted using `PlatformContextStore` by default, ensuring users can continue their conversations even after agent restarts or deployments. No extra configuration is needed:

```python
import os
from agentstack_sdk.server import Server
from agentstack_sdk.server.store.platform_context_store import PlatformContextStore

server = Server()

def run():
server.run(
host=os.getenv("HOST", "127.0.0.1"),
host=os.getenv("HOST", "127.0.0.1"),
port=int(os.getenv("PORT", 8000)),
context_store=PlatformContextStore()
)
```

To opt out of persistent storage and use in-memory history only, pass `context_store=InMemoryContextStore()` explicitly.



### History Contents
Expand Down
10 changes: 5 additions & 5 deletions docs/development/agent-integration/observability.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ For telemetry to flow successfully, it must be enabled at three levels:
</Step>

<Step title="The Python SDK">
The server must be configured to export that data by setting `configure_telemetry=True`.
Telemetry export is enabled by default. You can disable it by setting `configure_telemetry=False` in `server.run()`.
</Step>

<Step title="The Agent Stack Platform">
Expand All @@ -59,7 +59,7 @@ For telemetry to flow successfully, it must be enabled at three levels:
## Agent SDK Configuration
Before configuring an observability platform, your agent code must be "telemetry-aware." This configuration applies to all implementations, whether you are using local Phoenix or a cloud provider like Langfuse.

You must initialize instrumentation at the agent logic level and enable the export flag in the Agent Stack SDK:
You must initialize instrumentation at the agent logic level. Telemetry export to the platform collector is enabled by default:

```python
from agentstack_sdk.server import Server
Expand All @@ -72,11 +72,11 @@ from agentstack_sdk.server import Server
server = Server()

@server.agent()
async def my_agent():
async def my_agent():
...

# 2. SDK Level: Enable the bridge to the platform collector
server.run(configure_telemetry=True)
# 2. SDK Level: telemetry export is enabled by default
server.run()
```

<Tip>
Expand Down
Loading