rowboat/apps/python-sdk
2025-07-16 17:20:22 +05:30
..
src/rowboat Allow mocking tools over API and python sdk 2025-07-16 17:20:22 +05:30
.gitignore package python sdk for PyPI 2025-01-15 17:44:42 +05:30
pyproject.toml Allow mocking tools over API and python sdk 2025-07-16 17:20:22 +05:30
README.md Allow mocking tools over API and python sdk 2025-07-16 17:20:22 +05:30
requirements.txt update py sdk - add stateless and stateful calls 2025-01-15 15:45:02 +05:30

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)