Fixing the openai api
Project description
Simple Large Language Inference Model
sllim serves as a quality of life wrapper around the openai-python library.
I found myself writing and rewriting the same helper functions with each new project I began, so now I am working to put these functions together into a easy to use library.
Nothing here is ground-breaking; everything here is opinionated.
Usage
Use the chat function to connect with the ChatCompletion.create models. By default, it uses the gpt-3.5-turbo model, but you can pass a model param to use gpt-4
from sllim import chat
chat(
[
{
"role": "system",
"content": "Example system message",
},
{
"role": "user",
"content": "Example user message",
}
]
)
complete works just like Completion.create, and embed is Embedding.create.
Map Reduce
from sllim import map_reduce
template = [
{
"role": "system",
"content": "You are an excellent copy writer and you will rewrite my work into {adjective} words."
},
{
"role": "user",
"content": "Below is my writing, please improve it.\n\n{writing}"
},
]
writings = [...] # long list of copywriting
for adjective in ["clearer", "more expressive", "fewer"]:
# Since `writings` is a list, this is what we will reduce over.
# The other variables are treated as constants through the reduction.
gen = map_reduce(template, adjective=adjective, writing=writings, model="gpt-4")
for idx, result in enumerate(gen):
# This is a multithreaded generator to optimize latency to networked services
original = writings[idx]
print("Was:", original, "\nNow:", result)
Benefits
-
Local file caching. Each of the functions is locally cached in request-response key-pairs to prevent excessive network activity.
-
Auto-retry. Timeouts for rate limits, retry for internal errors (>=500 status code).
-
Parameter names are in the functions so that you don't have to go looking at the docs constantly.
-
Map reduce prompts onto data
-
TODO: Cost estimates before running long tasks
-
TODO: Describe task -> run task
-
TODO: Allow easy estimate
-
TODO: Allow easy logging
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 sllim-0.2.2.tar.gz.
File metadata
- Download URL: sllim-0.2.2.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.1 CPython/3.8.6 Darwin/22.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8244b8924273c9029339c84f25d56dbda72d9ec614128a88f5a61e9169d915b
|
|
| MD5 |
6bcc318a2f7fe5fa827251b9441142f6
|
|
| BLAKE2b-256 |
d840a395d65f120eb36141abef811b3dbe9abcee39583f3ece04496e3e39338a
|
File details
Details for the file sllim-0.2.2-py3-none-any.whl.
File metadata
- Download URL: sllim-0.2.2-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.1 CPython/3.8.6 Darwin/22.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
084385423e49bac967a20b08268e5cd29d02a1818f51044680f5a62e8f884d98
|
|
| MD5 |
f3da5f68240faa4e30e530534e31fd24
|
|
| BLAKE2b-256 |
53a9bf67e560a58c3d7bbeef17948a6a6c7f013fbe0741aa8c1e9572b0a8df3c
|