Documentation Index
Fetch the complete documentation index at: https://polos.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
Conversation memory enables agents to maintain context across multiple interactions. Agents remember previous messages and use them to provide coherent, context-aware responses in multi-turn conversations.
Enabling conversation memory
Set conversation_history to specify how many previous messages to retain:
from polos import Agent
conversational_agent = Agent(
id="chat-agent",
provider="openai",
model="gpt-4o",
system_prompt="You are a helpful assistant. Be friendly and concise.",
conversation_history=10 # Keep last 10 messages (i.e. 5 conversation turns)
)
The agent automatically manages conversation history - no manual bookkeeping required.
Defaults to conversation_history=10 when you don’t specify anything.
Using conversation IDs
Group related messages using conversation_id.
Works with agent.run():
client = PolosClient()
result = await research_agent.run(
client,
user_message,
conversation_id=conversation_id
)
and agent.stream():
stream = await research_agent.stream(
client,
user_message,
conversation_id=conversation_id
)
How it works:
- Agent retrieves past messages for this
conversation_id
- Includes them in the LLM context
- Stores the new message after generating a response
Example
import asyncio
from polos import PolosClient
async def main():
conversation_id = "user-123-session-1"
client = PolosClient()
# Turn 1
response1 = await my_agent.run(
client,
"My name is Alice and I love Python.",
conversation_id=conversation_id
)
print(response1.result)
# Turn 2 - Agent remembers Alice and Python
response2 = await my_agent.run(
client,
"What's my favorite programming language?",
conversation_id=conversation_id
)
print(response2.result) # "Your favorite programming language is Python"
# Turn 3 - Agent remembers the name
response3 = await my_agent.run(
client,
"What's my name?",
conversation_id=conversation_id
)
print(response3.result) # "Your name is Alice"
if __name__ == "__main__":
asyncio.run(main())
History limits
The conversation_history parameter controls the maximum number of messages retained:
# Keep last 20 messages
agent = Agent(
id="agent",
conversation_history=20
)
What happens when the limit is exceeded:
- Oldest messages are dropped
- Most recent messages (in this example, 20 messages) are kept
- Agent always has the latest context