Python client library for the Rebyte API
Project description
Rebyte Python Library
The Rebyte Python library provides convenient access to the Rebyte API from applications written in the Python language. It includes a pre-defined set of classes for API resources that initialize themselves dynamically from API responses which makes it compatible with a wide range of versions of the Rebyte API.
Features
- Generate streaming or non-streaming output.
- Use async or sync method.
- Support stateful agent memory with session_id.
Installation
Python 3.7 and above is required.
pip install rebyte
If already installed, update package to the latest version:
pip install --upgrade rebyte
If wishing to modify this package, clone and install in editable mode:
git clone https://github.com/ReByteAI/rebyte-python.git
cd rebyte-python
pip install -e .
Prerequisites
ReByte API Key
To get your ReByte API key, follow these steps:
- Go to the ReByte website and sign up for an account if you haven't already.
- Once you're logged in, go to Settings > API Keys.
- Generate a new API key by clicking on the "Generate" button.
- Prepare to use it during configuration.
ReByte Agent Creation
-
You can follow the tutorial in the webpage ReByte Quick Start to create your own agent. Or you can use agents in ReByte Community. Open an agent and clone to your personal project.
-
Deploy the agent and get the project_id and agent_id in the following format: https://rebyte.ai/api/sdk/p/{project_id}/a/{agent_id}/r.
Usage (TODO)
API
Call the ReByte agent in sync and nonstreaming method:
from rebyte import RebyteAPIRequestor
requestor = RebyteAPIRequestor(
key=<your api_key>,
api_base=<rebyte endpoint, default to https://rebyte.ai>
)
path = f'/api/sdk/p/{project_id}/a/{agent_id}/r'
data = {
"version": "latest",
"inputs": [{"messages": [{"role": "user","content": "My name is John"}]}],
"config": {}
}
res, _, _ = requestor.request(
method="POST",
url=path,
params=data,
stream=False
)
print(res.data['run']['results'][0][0]["value"]["content"])
Async API
Async support is available in the API by prepending a to a network-bound method:
import asyncio
from rebyte import RebyteAPIRequestor
async def main():
requestor = RebyteAPIRequestor(
key=<your api_key>,
api_base=<rebyte endpoint, default to https://rebyte.ai>
)
path = f'/api/sdk/p/{project_id}/a/{agent_id}/r'
data = {
"version": "latest",
"inputs": [{"messages": [{"role": "user","content": "My name is John"}]}],
"config": {}
}
res, _, _ = await requestor.arequest(
method="POST",
url=path,
params=data,
stream=False
)
print(res.data['run']['results'][0][0]["value"]["content"])
asyncio.run(main())
Stream API
Streaming support is available in the API by set request in stream=True mode:
from rebyte import RebyteAPIRequestor
requestor = RebyteAPIRequestor(
key=<your api_key>,
api_base=<rebyte endpoint, default to https://rebyte.ai>
)
path = f'/api/sdk/p/{project_id}/a/{callable_id}/r'
data = {
"version": "latest",
"inputs": [{"messages": [{"role": "user","content": "My name is John"}]}],
"config": {},
"stream": True
}
res, _, _ = requestor.request(
method="POST",
url=path,
params=data,
stream=True
)
for msg in res:
# print streaming output message
stream_text = msg.get_stream_chunk()
if msg and stream_text:
print(stream_text)
API session
from rebyte import RebyteAPIRequestor
requestor = RebyteAPIRequestor(
key=<your api_key>,
api_base=<rebyte endpoint, default to https://rebyte.ai>
)
path = f'/api/sdk/p/{project_id}/a/{callable_id}/r'
# You may use any string as session_id and try to avoid duplicate session_ids
# Note that you must set session_id if you want to enable stateful actions, such as threads (aka, memory), in your agent.
# Or you can leave it as empty when the agent has no stateful actions.
data = {
"version": "latest",
"inputs": [{"messages": [{"role": "user","content": "Please remember: My name is John"}]}],
"config": {},
"session_id" : "ANY_STRING"
}
res, _, _ = requestor.request(
method="POST",
url=path,
params=data,
stream=False
)
print(res.data['run']['results'][0][0]["value"]["content"])
data = {
"version": "latest",
"inputs": [{"messages": [{"role": "user","content": "Please answer me: What is my name?"}]}],
"config": {},
"session_id" : "ANY_STRING"
}
res, _, _ = requestor.request(
method="POST",
url=path,
params=data,
stream=False
)
print(res.data['run']['results'][0][0]["value"]["content"])
Please see more examples in test/ and examples.ipynb.
Documentation
More information can be found on the ReByte Documentation Site.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rebyte-0.0.4.tar.gz.
File metadata
- Download URL: rebyte-0.0.4.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30fd8def877c55c478368364a7aa4a0a5f899f58895cc559621094e3407744a5
|
|
| MD5 |
21b35e639ca9936942ba376d88eeabb5
|
|
| BLAKE2b-256 |
0b4e8495e93401a9f874d378dd5731ce93bb57f18b35f60da7da5a772279684a
|
File details
Details for the file rebyte-0.0.4-py3-none-any.whl.
File metadata
- Download URL: rebyte-0.0.4-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a4c2e97be48565ef86f2d8ba961e20190479a071116622e1e0e28c1059acde7
|
|
| MD5 |
a22e9a292d560aff0dbb5abb1fe42c17
|
|
| BLAKE2b-256 |
fdd31e2f708d8953cdeedd3ca7dcd6757339e25205c2c23648536b000ade1072
|