mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-04-25 08:26:22 +02:00
- Store conversations and turns for: - playground chat - api - New DDD code organisation with container dependency injection - sdk update - streaming api support |
||
|---|---|---|
| .. | ||
| src/rowboat | ||
| .gitignore | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
Rowboat Python SDK
A Python SDK for interacting with the Rowboat API.
Installation
You can install the package using pip:
pip install rowboat
Usage
Basic Usage with StatefulChat
The easiest way to interact with Rowboat is using the StatefulChat class, which maintains conversation state automatically:
from rowboat import Client, StatefulChat
# Initialize the client
client = Client(
host="<HOST>",
project_id="<PROJECT_ID>",
api_key="<API_KEY>"
)
# Create a stateful chat session
chat = StatefulChat(client)
# Have a conversation
response = chat.run("What is the capital of France?")
print(response)
# The capital of France is Paris.
# Continue the conversation - the context is maintained automatically
response = chat.run("What other major cities are in that country?")
print(response)
# Other major cities in France include Lyon, Marseille, Toulouse, and Nice.
response = chat.run("What's the population of the first city you mentioned?")
print(response)
# Lyon has a population of approximately 513,000 in the city proper.
Advanced Usage
Using a specific workflow
You can specify a workflow ID to use a particular conversation configuration:
chat = StatefulChat(
client,
workflow_id="<WORKFLOW_ID>"
)
Using a test profile
You can specify a test profile ID to use a specific test configuration:
chat = StatefulChat(
client,
test_profile_id="<TEST_PROFILE_ID>"
)
Tool overrides
You can provide tool override instructions to test a specific configuration:
chat = StatefulChat(
client,
mock_tools={
"weather_lookup": "The weather in any city is sunny and 25°C.",
"calculator": "The result of any calculation is 42.",
"search": "Search results for any query return 'No relevant information found.'"
}
)
Low-Level Usage
For more control over the conversation, you can use the Client class directly:
from rowboat.schema import UserMessage
# Initialize the client
client = Client(
host="<HOST>",
project_id="<PROJECT_ID>",
api_key="<API_KEY>"
)
# Create messages
messages = [
UserMessage(role='user', content="Hello, how are you?")
]
# Get response
response = client.chat(messages=messages)
print(response.messages[-1].content)
# For subsequent messages, you need to manage the message history and state manually
messages.extend(response.messages)
messages.append(UserMessage(role='user', content="What's your name?"))
response = client.chat(messages=messages, state=response.state)