package python sdk for PyPI

This commit is contained in:
ramnique 2025-01-15 17:44:32 +05:30
parent 642b6dc91d
commit f4180fbffb
6 changed files with 165 additions and 2 deletions

View file

@ -1,3 +1,4 @@
__pycache__/ __pycache__/
venv/ venv/
.venv/ .venv/
dist/

99
apps/python-sdk/README.md Normal file
View 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]

View 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"

View 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",
]

View file

@ -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: