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