Deliver AI products in days, not months, using requesty.ai
Project description
RequestyAI Python API library
Deliver AI products in days, not months, using requesty.ai
Step up your AI game with a simple integration:
- Real-time insights into your AI flows: See how your clients use your LLMs
- Hassle free auditing and logging: Don't stress about storage and infra
- Powerful analytics: Discover trends using your Requesty's insight-explorer
Installation
pip install requestyai
AInsights
A client library to effortlessly integrate powerful insights into your AI flows.
Create a client with minimal configuration and capture and request/response pair for future analysis.
Notes
Thread-safety
The insights client is thread-safe. You can safely use a single client from multiple threads.
Asynchronous
The insights client is asynchronous.
capture()-ing requests/responses is a non-blocking operation,
and it will not interrupt the flow of your application.
Usage pattern #1: Create client instance
If you prefer creating and using client instance,
just add an AInsights instance next to your OpenAI one,
and capture every interaction by adding a single call.
It doesn't matter if you're using simple free-text outputs, JSON outputs or tools, the insights client will capture everything.
Check out this working sample
from openai import OpenAI
from requestyai import AInsights
class OpenAIWrapper:
def __init__(self, openai_api_key, requesty_api_key):
self.model = OpenAI(api_key=openai_api_key)
self.args = {
model="gpt-4o",
temperature=0.7,
max_tokens=150
}
self.insights = AInsights.new_client(api_key=requesty_api_key)
def chat(self, user_id: str, user_input: str):
messages = [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": user_input }
]
class Response(BaseModel):
answer: str
response = self.model.beta.chat.completions.parse(messages=messages,
response_format=Response,
**self.args)
self.insights.capture(messages=messages,
response=response,
args=self.args,
user_id=user_id)
return Response.model_validate_json(response.choices[0].message.content)
if __name__ == "__main__":
requesty_api_key = os.environ["REQUESTY_API_KEY"]
openai_api_key = os.environ["OPENAI_API_KEY"]
wrapper = OpenAIWrapper(openai_api_key, requesty_api_key)
# Dummy loggin to capture the user's ID
user_id = input("User ID: ")
while True:
user_input = input("Ask any question?")
response = wrapper.chat(user_id, user_input)
print(response.answer)
Usage pattern #2: Use a global instance
You like it simple. You just want to call OpenAI from anywhere in your code, and the insights should be no different.
Just create a simple file (ainsights_instance.py is a reasonable name) in your project,
and import it everywhere. The client is thread-safe.
Check out this working sample
import os
from requestyai import AInsights
requesty_key = os.environ["REQUESTY_KEY"]
ainsights = AInsights.new_client(api_key=requesty_key)
Then, calling OpenAI and capturing is as easy as:
It doesn't matter if you're using simple free-text outputs, JSON outputs or tools, the insights client will capture everything.
from openai import OpenAI
from ainsights_instance import ainsights
if __name__ == '__main__':
openai.api_key = os.environ["OPENAI_API_KEY"]
messages = [{ "role": "user", "content": user_input }]
args = {
model="gpt-4o-mini",
temperature=0.7,
max_tokens=150
}
response = openai.chat.completions.create(messages=messages, **args)
ainsights.capture(messages=messages, response=response, args=args)
print(response.choices[0].message.content)
User tracking
If you want your insights to be tied to a specific user,
you can specify the user_id argument when calling capture(...).
See "Usage pattern #1" above for specific details.
Sample applications
Check out the samples directory for working examples you can try out in no time.
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 requestyai-0.3.3.tar.gz.
File metadata
- Download URL: requestyai-0.3.3.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.8.18 Linux/6.5.0-1025-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c2525b3544579e46b56d3ebee0b1ab5c4639ca8dc32f4211c7fa74b8e3ea1653
|
|
| MD5 |
d61a492fa74ce990e15624601c4dc326
|
|
| BLAKE2b-256 |
6535d82642aa31b36780687a1d6d958e74f90c2de7a4022ad484cd9fe4335bfe
|
File details
Details for the file requestyai-0.3.3-py3-none-any.whl.
File metadata
- Download URL: requestyai-0.3.3-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.8.18 Linux/6.5.0-1025-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee0ab5ad30a4a309dd1b843240f34e518be4b5420280380648757b4fb08bc6e6
|
|
| MD5 |
e9e7b736bcadd7a63648d46b74e9b069
|
|
| BLAKE2b-256 |
c1fa4aa3b8803d55dc99fc131dd32ec4221635d1f742efc12027614017ab57ea
|