Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sllim-0.2.2.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

sllim-0.2.2-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

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

Hashes for sllim-0.2.2.tar.gz
Algorithm Hash digest
SHA256 d8244b8924273c9029339c84f25d56dbda72d9ec614128a88f5a61e9169d915b
MD5 6bcc318a2f7fe5fa827251b9441142f6
BLAKE2b-256 d840a395d65f120eb36141abef811b3dbe9abcee39583f3ece04496e3e39338a

See more details on using hashes here.

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

Hashes for sllim-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 084385423e49bac967a20b08268e5cd29d02a1818f51044680f5a62e8f884d98
MD5 f3da5f68240faa4e30e530534e31fd24
BLAKE2b-256 53a9bf67e560a58c3d7bbeef17948a6a6c7f013fbe0741aa8c1e9572b0a8df3c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page