Skip to main content

PowerML python package

Reason this release was yanked:

Please install most recent version

Project description

PowerML Python Package

Installation

pip install powerml_app

Authentication

You will need a PowerML key. To get a PowerML key, go to https://staging.powerml.co/ and log in with your email. Contact our team if you are unable to log in and we'll add you!

Optional: To get an OpenAI key, go to https://beta.openai.com/account/api-keys.

Configuration

You configure the PowerML class by passing in a dictionary like so:

from powerml import PowerML
config = {"powerml": {"key": "<POWERML-KEY>"}}
powerml = PowerML(config)

Optional: Create a config file at ~/.powerml/configure.yaml with your PowerML and OpenAI keys. Here's an example:

powerml:
    key: "<POWERML-KEY>"
openai:
    key: "<OPENAI-KEY>"

These are default keys for the PowerML class but will be overriden by any configuration dictionary passed into the class constructor.

Usage

You can use the member functions of the PowerML class, predict and fit, to make predictions with the model and fit data to the model to improve and customize it.

You can use predict to run any prompt off the bat:

from powerml import PowerML

powerml = PowerML()

# Run base model
myPrompt = "hello there"
response = powerml.predict(prompt=myPrompt)

To fit data to the model, you can use fit as so:

# Fit model to data
myData = ["item2", "item3"]
myModel = powerml.fit(myData)

To run this fitted model, you can use predict again, specifying the new model name:

# Use new model
myModelName = myModel["model_name"]
response = powerml.predict(prompt=myPrompt, model=myModelName)

PowerML Class

The PowerML class has member functions fit and predict.

Predict

predict accepts the following arguments:

def predict(self,
            prompt: str,
            model: str = "text-davinci-003",
            stop: str = "",
            max_tokens: int = 128,
            temperature: int = 0,
            ) -> str:

predict will return a string of the model's output.

fit accepts the following arguments:

def fit(self,
        data: list[str],
        model: str = ""):

fit will return a dictionary object in the following format:

{
    "model_id":"23",
    "project_id":"None",
    "user_id":"12",
    "job_id":"89",
    "model_name":"be894276039088c5f8db3f6bfaeb19953ed9ffe55f37a847a58f9fb320d307bc",
    "job_config":"{\"type\": \"prompt_tune\", \"model_name\": \"llama\"}",
    "prompt":"item2item3{{input}}",
    "creation_time":"2022-12-20 02:19:36.519260",
    "job":{
        "job_id":"89",
        "project_id":"None",
        "user_id":"12",
        "config":"{\"type\": \"prompt_tune\", \"model_name\": \"llama\"}",
        "status":"COMPLETED",
        "name":"be894276039088c5f8db3f6bfaeb19953ed9ffe55f37a847a58f9fb320d307bc",
        "metric":"None",
        "history":"None",
        "start_time":"2022-12-20 02:19:36.369450",
        "end_time":"2022-12-20 02:19:35.837668"
    }
}

ExtractTopicsModel Class

The ExtractTopicsModel class is an example class designed to extract topics from the prompt.

Usage

To instantiate a ExtractTopicsModel.

model = ExtractTopicsModel(topics)

To customize your ExtractTopicsModel instance, you can pass it examples and topics to fit.

# Examples in json for the model to fit to, in the format:
# [
#    { "example": "Using VS here for my IDE", labels: ["vscode"] },
#    { "example": "A dashboard on Chrome", labels: ["web", "dashboard"] },
# ]
examples = get_json_examples()

# Topics, e.g. ["vscode", "web", "dashboard"]
topics = get_list_of_topics()

model.fit(examples, topics)

Now, you can run this model on new examples with predict:

new_example = "Move invite teammates page to its own base route . per designs:   This PR just moves existing views around and adds a new base route (i.e. no new functionality)"

example_topics = model.predict(new_example)

Methods

__init__ is defined as follows:

def __init__(self, config={}, model_name=None):

fit is defined as follows:

def fit(self, 
        examples: list[
            {"example": str, "labels": list[str]}
        ],
        topics: list[str],
        ):

where examples is a list of dictionaries with format {"example": str, "labels": list[str]}.

predict is defined as follows:

def predict(self, prompt: str):

CreateTopicsModel Class

The CreateTopicsModel class is an example class designed to generate topics from a list of data. This is a batch process and may take a few minutes.

Usage

docs = get_list_of_data()
learn_topics = CreateTopicsModel()
learn_topics.fit(docs, topic_type='one-word system components')
topics = learn_topics.predict()

Usage with ExtractTopicsModel

Topics can be learned by CreateTopicsModel, then used in ExtractTopicsModel.

First, get topics from CreateTopicsModel:

docs = get_list_of_data()
learn_topics = CreateTopicsModel()
learn_topics.fit(docs, topic_type='one-word system components')
topics = learn_topics.predict()

Then, use ExtractTopicsModel as you normally would (as above) to fit it to examples, and then predict on new examples:

topic_model = ExtractTopicsModel()
labeled_data = get_formatted_examples()
topic_model.fit(labeled_data, topics)

new_example = "Move invite teammates page to its own base route . per designs:   This PR just moves existing views around and adds a new base route (i.e. no new functionality)"
new_example_topics = topic_model.predict(new_example)

Methods

__init__ is defined as follows:

def __init__(
        self,
        config={},
        num_subsamples=87,
        max_output_tokens=256,):

fit is defined as follows:

def fit(self, documents, topic_type):

where documents is a list of strings.

predict is defined as follows:

def predict(self):

and returns a set of strings.

WriteEmailModel Class

The WriteEmailModel class is an example class designed to generate emails from a subject.

Usage

model = WriteEmailModel()
email = model.predict("Toys'r'Us")

ExtractMenuItemsModel Class

The ExtractMenuItemsModel class is an example class designed to generate orders from a conversation.

Usage

model = ExtractMenuItemsModel()
items = model.predict("1 Chicken Burrito")

ForecastSequenceModel Class

The ForecastSequenceModel class is an example class designed to generate a numeric sequence from a title.

Usage

model = ForecastSequenceModel()
autocompletion = model.predict("Freakonomics Radio")

AutocompleteSQLModel Class

The AutocompleteSQLModel class is an example class designed to generate sql completions from a prompt.

Usage

model = AutocompleteSQLModel()
model.fit(
    table_schemas=[
        "CREATE TABLE users ( id SERIAL PRIMARY KEY, first_name TEXT, last_name TEXT);"
    ],
    example_queries=[
        "SELECT * FROM users WHERE id=?"
    ])
autocompletion = model.predict("select * from ")

QuestionAnswerModel Class

The QuestionAnswerModel class is an example class designed to generate questions from an answer.

Usage

model = QuestionAnswerModel()
lesson = "Greek Philosophy"
answer = "Socrates"
examples = [
    "Who said 'The only true wisdom is in knowing you know nothing.'",
    "Who said 'I am the wisest man alive, for I know one thing, and that is that I know nothing.'",
]
model.fit(lesson, answer, examples)
result = model.predict()

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

powerml_app-0.0.35.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

powerml_app-0.0.35-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file powerml_app-0.0.35.tar.gz.

File metadata

  • Download URL: powerml_app-0.0.35.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for powerml_app-0.0.35.tar.gz
Algorithm Hash digest
SHA256 f7be445a7d26411a75f1c003b4cd7ff3ad350c1e73f3cbc90468110a8c111475
MD5 518dfef976003e89a49c263d28da8377
BLAKE2b-256 2ed6c025842ffc8f70eec5a3c4d1f6f4c26189f499a7175abdd152a0f7b5dcb3

See more details on using hashes here.

File details

Details for the file powerml_app-0.0.35-py3-none-any.whl.

File metadata

File hashes

Hashes for powerml_app-0.0.35-py3-none-any.whl
Algorithm Hash digest
SHA256 a4d53e37776f1c88c3d8abd7b4ff4ad2bcadf41758ac9679e54f4218d5bea2ec
MD5 a7f83495abccbce5121b7f56e30a5f5c
BLAKE2b-256 15384ba962084156609d732a6b53aae6c91b0e80ef80f19fdb37488f6c3cb22a

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