A Python SDK for PromptStudio
Project description
PromptStudio Python SDK
A Python SDK for interacting with PromptStudio API and AI platforms directly.
Installation
From PyPI
pip install promptstudio-sdk
From Source
git clone https://github.com/your-repo/promptstudio-sdk.git
cd promptstudio-sdk
pip install -e .
Development Setup
- Create a virtual environment:
python -m venv venv
- Activate the virtual environment:
# On Windows
venv\Scripts\activate
# On Unix or MacOS
source venv/bin/activate
- Install dependencies:
pip install -r requirements.txt
Usage
Initializing the SDK
from promptstudio_sdk import PromptStudio
client = PromptStudio({
'api_key': 'YOUR_API_KEY',
'env': 'prod', # Use 'prod' for production environment
'bypass': True,
'is_logging': True,
'timeout': 5000 # Timeout in milliseconds
})
Configuration Options
bypass (default: False)
The bypass parameter determines whether to use the local AI provider directly or route requests through PromptStudio's API:
- When
bypass=True: Requests go directly to the AI provider, bypassing PromptStudio's API - When
bypass=False: Requests are routed through PromptStudio's API for additional processing and logging
When bypass=True, you can use the role-based message format in user_message, such as:
user_message = [
{"role": "user", "content": [{"type": "text", "text": "Hi"}]},
{"role": "assistant", "content": [{"type": "text", "text": "Hello! How can I help you?"}]},
{"role": "user", "content": [{"type": "text", "text": "What is Python?"}]}
]
Note: This format is only supported when
bypass=True. If used withbypass=False, an error will be raised.
When bypass=False, you must use the simpler format:
user_message = [
{"type": "text", "text": "Hello"}
]
is_session_enabled (default: True)
Controls whether conversation history is maintained across requests.
is_logging (default: True)
Determines whether interactions are logged for analytics.
shot (default: -1)
Controls how many message pairs to include from the beginning of the conversation:
-1: All previous messages are included0: No previous messages are includedn > 0: Firstnpairs (2n messages) are included
timeout (default: 25)
Sets the maximum time (in milliseconds) to wait for a response. If exceeded, raises a TimeoutError.
Using shot
# Example: Using shot to include first 2 pairs of messages
response = client.chat_with_prompt(
prompt_id="your_prompt_id",
user_message=[{"type": "text", "text": "Hello"}],
session_id="your_session_id",
shot=2
)
Memory Control
memory_type (default: "fullMemory")
Controls how past conversation context is included in each request.
Supported values:
"fullMemory": Maintains the complete conversation history."windowMemory": Keeps a sliding window of recent messages,includes only the latest N messages, controlled viawindow_size."summarizedMemory":Maintains a summarized version of the conversation history.
window_size (used with "windowMemory")
When memory_type is set to "windowMemory", window_size defines how many past messages to include.
Example:
response = client.chat_with_prompt({
"prompt_id": "abc123",
"user_message": [{"type": "text", "text": "Tell me a joke"}],
"session_id": "session_xyz",
"memory_type": "windowMemory",
"window_size": 6
})
Chatting with a Prompt
response = client.chat_with_prompt(
prompt_id="your_prompt_id",
user_message=[
{
"type": "text",
"text": "Hello, how are you?"
}
],
memory_type="fullMemory",
window_size=0,
session_id="your_session_id",
variables={},
is_session_enabled=True,
shot=2,
)
print(response)
Tag Field (Optional Metadata)
You can pass a tag dictionary to include custom metadata such as user identifiers :
tag = {
"userId": "680b5b825149777520281b5b",
"userName":"Roshni",
"Location":"India"
}
- Useful for custom tracking, filtering, or analytics
Complete Example
from promptstudio_sdk import PromptStudio
def main():
client = PromptStudio({
'api_key': 'YOUR_API_KEY',
'env': 'test',
'bypass': True,
'is_logging': True,
'timeout': 500
})
try:
response = client.chat_with_prompt(
prompt_id="your_prompt_id",
user_message=[
{"type": "text", "text": "Hello, how are you?"}
],
memory_type="windowMemory",
window_size=10,
session_id="your_session_id",
variables={},
is_session_enabled=True,
shot=2,
)
print("Chat response:", response)
except Exception as e:
print(f"An error occurred: {e}")
if __name__ == "__main__":
main()
Session Retrieval
response = await client.get_session(session_id="your_session_id")
This returns the complete session state, including historical messages and any metadata.
Type Hints
from typing import Dict, List, Union, Optional
ImageMessage = Dict[str, Union[str, Dict[str, str]]]
TextMessage = Dict[str, str]
UserMessage = List[Union[ImageMessage, TextMessage]]
Memory = Literal["fullMemory", "windowMemory", "summarizedMemory"]
RequestPayload = Dict[str, Union[UserMessage, Memory, int, str, Dict[str, str], Optional[int]]]
Contributing
- Fork the repository
- Create a new branch
- Make your changes
- Run tests
- Submit a pull request
License
This SDK is released under the MIT License.
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 promptstudio_sdk-1.0.250.tar.gz.
File metadata
- Download URL: promptstudio_sdk-1.0.250.tar.gz
- Upload date:
- Size: 41.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0dba8191588b4dbe1f8e7cfeffaf0e8b24618efb3c5f5681d456a9cad681bf8
|
|
| MD5 |
0359df43921f0d084d5e43fd147067fe
|
|
| BLAKE2b-256 |
abaae78116e9469f2fd3da10d23c13d320f90ba5c3197591a66976f85534af74
|
File details
Details for the file promptstudio_sdk-1.0.250-py3-none-any.whl.
File metadata
- Download URL: promptstudio_sdk-1.0.250-py3-none-any.whl
- Upload date:
- Size: 35.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73ec9d177578a457ee824c48bf6d49ed44b71d90cd935948e426555ca7ae61ef
|
|
| MD5 |
8646284ec433701426f5a2a371bd6179
|
|
| BLAKE2b-256 |
212a3037c5c5b1738c10a77fd9a94c2e2068e5438f91f0205c98e50e3fd9ab02
|