diff --git a/README.md b/README.md index 1999e815..866115b6 100644 --- a/README.md +++ b/README.md @@ -77,9 +77,36 @@ Before running RowBoat, ensure you have: 4. **Access the App** - Visit [http://localhost:3000](http://localhost:3000). -5. **Use the API** +5. **Interact with RowBoat** - You can use the API at [http://localhost:3000/api/v1/](http://localhost:3000/api/v1/) + There are two ways to interact with RowBoat: + + ### Option 1: Python SDK + + For Python applications, we provide an official SDK for easier integration: + ```bash + pip install rowboat + ``` + + ```python + from rowboat import Client + + client = Client( + host="http://localhost:3000", + project_id="", + project_secret="" + ) + + # Simple chat interaction + messages = [{"role": "user", "content": "Tell me the weather in London"}] + response_messages, state = client.chat(messages=messages) + ``` + + For more details, see the [Python SDK documentation](./apps/python-sdk/README.md). + + ### Option 2: HTTP API + + You can use the API directly at [http://localhost:3000/api/v1/](http://localhost:3000/api/v1/) - Project ID is available in the URL of the project page - Project Secret is available in the project config page diff --git a/apps/python-sdk/README.md b/apps/python-sdk/README.md index b87a9861..d34edb8c 100644 --- a/apps/python-sdk/README.md +++ b/apps/python-sdk/README.md @@ -14,10 +14,11 @@ pip install rowboat ### Basic Usage -Initialize a client and create a chat session: +Initialize a client and use the chat method directly: ```python -from rowboat import Client, StatefulChat +from rowboat import Client +from rowboat.schema import UserMessage, SystemMessage # Initialize the client client = Client( @@ -26,21 +27,28 @@ client = Client( project_secret="" ) -# Create a chat session -chat = StatefulChat(client) +# Create messages +messages = [ + SystemMessage(role='system', content="You are a helpful assistant"), + UserMessage(role='user', content="Hello, how are you?") +] -# Send a message and get a response -response = chat.run("Hello, how are you?") -print(response) +# Get response +response_messages, state = client.chat(messages=messages) +print(response_messages[-1].content) + +# For subsequent messages, include previous messages and state +messages.extend(response_messages) +messages.append(UserMessage(role='user', content="What's your name?")) +response_messages, state = client.chat(messages=messages, state=state) ``` ### Using Tools -The SDK supports function calling through tools. Here's how to use them: +The SDK supports function calling through tools: ```python def weather_lookup(city_name: str) -> str: - # Implement your weather lookup logic here return f"The weather in {city_name} is 22°C." # Create a tools dictionary @@ -48,24 +56,31 @@ tools = { 'weather_lookup': weather_lookup } -# Initialize chat with tools -chat = StatefulChat(client, tools=tools) - -# The AI can now use the weather tool -response = chat.run("What's the weather in London?") -print(response) +# Use tools with the chat method +response_messages, state = client.chat( + messages=messages, + tools=tools +) ``` -### System Prompts +### Stateful Chat (Convenience Wrapper) -You can initialize the chat with a system prompt to guide the AI's behavior: +For simpler use cases, the SDK provides a `StatefulChat` class that maintains conversation state automatically: ```python +from rowboat import StatefulChat + +# Initialize stateful chat chat = StatefulChat( client, tools=tools, - system_prompt="You are a helpful assistant who specializes in weather information." + system_prompt="You are a helpful assistant." ) + +# Simply send messages and get responses +response = chat.run("Hello, how are you?") +print(response) +# I'm good, thanks! How can I help you today? ``` ## API Reference @@ -88,12 +103,4 @@ StatefulChat( tools: Optional[Dict[str, Callable[..., str]]] = None, system_prompt: Optional[str] = None ) -``` - -## License - -[Add your license information here] - -## Contributing - -[Add contribution guidelines here] +``` \ No newline at end of file diff --git a/apps/python-sdk/pyproject.toml b/apps/python-sdk/pyproject.toml index fc4b6814..1c8cbc01 100644 --- a/apps/python-sdk/pyproject.toml +++ b/apps/python-sdk/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "rowboat" -version = "0.2.0" +version = "0.2.1" authors = [ { name = "Your Name", email = "your.email@example.com" }, ]