mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-06-27 20:29:44 +02:00
package python sdk for PyPI
This commit is contained in:
parent
642b6dc91d
commit
f4180fbffb
6 changed files with 165 additions and 2 deletions
3
apps/python-sdk/.gitignore
vendored
3
apps/python-sdk/.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
||||||
__pycache__/
|
__pycache__/
|
||||||
venv/
|
venv/
|
||||||
.venv/
|
.venv/
|
||||||
|
dist/
|
||||||
99
apps/python-sdk/README.md
Normal file
99
apps/python-sdk/README.md
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
# Rowboat Python SDK
|
||||||
|
|
||||||
|
A Python SDK for interacting with the Rowboat API.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
You can install the package using pip:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install rowboat
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Basic Usage
|
||||||
|
|
||||||
|
Initialize a client and create a chat session:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from rowboat import Client, StatefulChat
|
||||||
|
|
||||||
|
# Initialize the client
|
||||||
|
client = Client(
|
||||||
|
host="<HOST>",
|
||||||
|
project_id="<PROJECT_ID>",
|
||||||
|
project_secret="<PROJECT_SECRET>"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create a chat session
|
||||||
|
chat = StatefulChat(client)
|
||||||
|
|
||||||
|
# Send a message and get a response
|
||||||
|
response = chat.run("Hello, how are you?")
|
||||||
|
print(response)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using Tools
|
||||||
|
|
||||||
|
The SDK supports function calling through tools. Here's how to use them:
|
||||||
|
|
||||||
|
```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
|
||||||
|
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)
|
||||||
|
```
|
||||||
|
|
||||||
|
### System Prompts
|
||||||
|
|
||||||
|
You can initialize the chat with a system prompt to guide the AI's behavior:
|
||||||
|
|
||||||
|
```python
|
||||||
|
chat = StatefulChat(
|
||||||
|
client,
|
||||||
|
tools=tools,
|
||||||
|
system_prompt="You are a helpful assistant who specializes in weather information."
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
## API Reference
|
||||||
|
|
||||||
|
### Client
|
||||||
|
|
||||||
|
The `Client` class handles communication with the Rowboat API.
|
||||||
|
|
||||||
|
```python
|
||||||
|
Client(host: str, project_id: str, project_secret: str)
|
||||||
|
```
|
||||||
|
|
||||||
|
### StatefulChat
|
||||||
|
|
||||||
|
The `StatefulChat` class maintains conversation state across multiple turns.
|
||||||
|
|
||||||
|
```python
|
||||||
|
StatefulChat(
|
||||||
|
client: Client,
|
||||||
|
tools: Optional[Dict[str, Callable[..., str]]] = None,
|
||||||
|
system_prompt: Optional[str] = None
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
[Add your license information here]
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
[Add contribution guidelines here]
|
||||||
26
apps/python-sdk/pyproject.toml
Normal file
26
apps/python-sdk/pyproject.toml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
[build-system]
|
||||||
|
requires = ["hatchling"]
|
||||||
|
build-backend = "hatchling.build"
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "rowboat"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = [
|
||||||
|
{ name = "Your Name", email = "your.email@example.com" },
|
||||||
|
]
|
||||||
|
description = "Python sdk for the Rowboat API"
|
||||||
|
readme = "README.md"
|
||||||
|
requires-python = ">=3.7"
|
||||||
|
classifiers = [
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
"License :: OSI Approved :: Apache Software License",
|
||||||
|
"Operating System :: OS Independent",
|
||||||
|
]
|
||||||
|
dependencies = [
|
||||||
|
"requests>=2.25.0",
|
||||||
|
"pydantic>=2.0.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.urls]
|
||||||
|
"Homepage" = "https://github.com/rowboatlabs/rowboat/tree/main/apps/python-sdk"
|
||||||
|
"Bug Tracker" = "https://github.com/rowboatlabs/rowboat/issues"
|
||||||
28
apps/python-sdk/src/rowboat/__init__.py
Normal file
28
apps/python-sdk/src/rowboat/__init__.py
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
from .client import Client, StatefulChat
|
||||||
|
from .schema import (
|
||||||
|
ApiMessage,
|
||||||
|
UserMessage,
|
||||||
|
SystemMessage,
|
||||||
|
AssistantMessage,
|
||||||
|
AssistantMessageWithToolCalls,
|
||||||
|
ToolMessage,
|
||||||
|
ApiRequest,
|
||||||
|
ApiResponse
|
||||||
|
)
|
||||||
|
|
||||||
|
__version__ = "0.1.0"
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"Client",
|
||||||
|
"StatefulChat",
|
||||||
|
# Message types
|
||||||
|
"ApiMessage",
|
||||||
|
"UserMessage",
|
||||||
|
"SystemMessage",
|
||||||
|
"AssistantMessage",
|
||||||
|
"AssistantMessageWithToolCalls",
|
||||||
|
"ToolMessage",
|
||||||
|
# Request/Response types
|
||||||
|
"ApiRequest",
|
||||||
|
"ApiResponse",
|
||||||
|
]
|
||||||
|
|
@ -1,7 +1,16 @@
|
||||||
from typing import Dict, List, Optional, Any, Callable, Union, Tuple
|
from typing import Dict, List, Optional, Any, Callable, Union, Tuple
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
from schema import ApiRequest, ApiResponse, ApiMessage, ToolMessage, UserMessage, SystemMessage, AssistantMessage, AssistantMessageWithToolCalls
|
from .schema import (
|
||||||
|
ApiRequest,
|
||||||
|
ApiResponse,
|
||||||
|
ApiMessage,
|
||||||
|
ToolMessage,
|
||||||
|
UserMessage,
|
||||||
|
SystemMessage,
|
||||||
|
AssistantMessage,
|
||||||
|
AssistantMessageWithToolCalls
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Client:
|
class Client:
|
||||||
Loading…
Add table
Add a link
Reference in a new issue