History API Reference
The History class manages conversation history for multi-turn interactions.
Class: History
Constructor
Create a new History instance.
Parameters:
- messages (optional): Initial list of messages in OpenAI format
Example:
# Empty history
history = History()
# With initial messages
history = History(messages=[
{"role": "system", "content": "You are helpful"},
{"role": "user", "content": "Hello"}
])
Attributes
messages
List of conversation messages in OpenAI format. Each message is a dictionary with at minimum:
- role: One of "system", "user", "assistant", or "tool"
- content: Message content string
Assistant messages with tool calls also include:
- tool_calls: List of tool call dictionaries
Tool messages also include:
- tool_call_id: ID of the tool call this result is for
Example:
Methods
add_message
Add a message to the history.
Parameters:
- role: Message role ("system", "user", "assistant", "tool")
- content: Message content
- tool_calls (optional): Tool calls for assistant messages
Example:
history.add_message("user", "What is AI?")
history.add_message("assistant", "AI is...", tool_calls=[...])
add_user_message
Add a user message.
Parameters:
- content: User message content
Example:
add_assistant_message
Add an assistant message.
Parameters:
- content: Assistant message content
- tool_calls (optional): Tool calls made by assistant
Example:
add_system_message
Add a system message.
Parameters:
- content: System message content
Example:
add_tool_result
Add a tool result message.
Parameters:
- tool_call_id: ID of the tool call this result is for
- content: Tool result content
Example:
clear
Clear all messages from history.
Example:
copy
Create a copy of this history.
Returns:
- New History instance with copied messages
Example:
branch = history.copy()
# Modify branch without affecting original
branch.add_user_message("New question")
Magic Methods
__len__
Get number of messages in history.
Example:
__repr__
String representation showing number of messages.
Example:
__str__
Human-readable formatted conversation history.
Example:
print(history)
# History (3 messages):
# 1. [user] What is Python?
# 2. [assistant] Python is a programming language...
# 3. [user] What are its features?
Usage with Predict
History integrates seamlessly with Predict:
from udspy import Predict, History
predictor = Predict(QA)
history = History()
# History is automatically updated with each call
result = predictor(question="First question", history=history)
result = predictor(question="Follow-up question", history=history)
See History Examples for more usage patterns.