Skip to main content

Run gptscripts from Python apps

Project description

GPTScript Python Module

Introduction

The GPTScript Python module is a library that provides a simple interface to create and run gptscripts within Python applications, and Jupyter notebooks. It allows you to define tools, execute them, and process the responses.

Installation

You can install the GPTScript Python module using pip.

pip install gptscript

On MacOS, Windows X6

SDIST and none-any wheel installations

When installing from the sdist or the none-any wheel, the binary is not packaged by default. You must run the install_gptscript command to install the binary.

install_gptscript

The script is added to the same bin directory as the python executable, so it should be in your path.

Or you can install the gptscript cli from your code by running:

from gptscript.install import install
install()

Using an existing gptscript cli

If you already have the gptscript cli installed, you can use it by setting the envvar:

export GPTSCRIPT_BIN="/path/to/gptscript"

Using the Module

The module requires the OPENAI_API_KEY environment variable to be set with your OPENAI key. You can set it in your shell or in your code.

export OPENAI_AI_KEY="your-key"

Tools

The Tool class represents a gptscript tool. The fields align with what you would be able to define in a normal gptscript .gpt file.

Fields

  • name: The name of the tool.
  • description: A description of the tool.
  • tools: Additional tools associated with the main tool.
  • max_tokens: The maximum number of tokens to generate.
  • model: The GPT model to use.
  • cache: Whether to use caching for responses.
  • temperature: The temperature parameter for response generation.
  • args: Additional arguments for the tool.
  • internal_prompt: Internal prompt for the tool.
  • instructions: Instructions or additional information about the tool.
  • json_response: Whether the response should be in JSON format.(If you set this to True, you must say 'json' in the instructions as well.)

Primary Functions

Aside from the list methods there are exec and exec_file methods that allow you to execute a tool and get the responses. Those functions also provide a streaming version of execution if you want to process the output streams in your code as the tool is running.

Opts

You can pass the following options to the exec and exec_file functions:

opts= { "cache": True(default)|False, "cache-dir": "", }

Cache can be set to true or false to enable or disable caching globally or it can be set at the individual tool level. The cache-dir can be set to a directory to use for caching. If not set, the default cache directory will be used.

list_models()

This function lists the available GPT models.

from gptscript.command import list_models

models = list_models()
print(models)

list_tools()

This function lists the available tools.

from gptscript.command import list_tools

tools = list_tools()
print(tools)

exec(tool, opts)

This function executes a tool and returns the response.

from gptscript.command import exec
from gptscript.tool import Tool

tool = Tool(
    json_response=True,
    instructions="""
Create three short graphic artist descriptions and their muses. 
These should be descriptive and explain their point of view.
Also come up with a made up name, they each should be from different
backgrounds and approach art differently.
the response should be in JSON and match the format:
{
   artists: [{
      name: "name"
      description: "description"
   }]
}
""",
    )


response = exec(tool)
print(response)

exec_file(tool_path, input="", opts)

This function executes a tool from a file and returns the response. The input values are passed to the tool as args.

from gptscript.command import exec_file

response = exec_file("./example.gpt")
print(response)

stream_exec(tool, opts)

This function streams the execution of a tool and returns the output, error, and process wait function. The streams must be read from.

from gptscript.command import stream_exec
from gptscript.tool import Tool

tool = Tool(
    json_response=True,
    instructions="""
Create three short graphic artist descriptions and their muses. 
These should be descriptive and explain their point of view.
Also come up with a made up name, they each should be from different
backgrounds and approach art differently.
the response should be in JSON and match the format:
{
   artists: [{
      name: "name"
      description: "description"
   }]
}
""",
    )

def print_output(out, err):
    # Error stream has the debug info that is useful to see
    for line in err:
        print(line)

    for line in out:
        print(line)

out, err, wait = stream_exec(tool)
print_output(out, err)
wait()

stream_exec_file(tool_path, input="",opts)

This function streams the execution of a tool from a file and returns the output, error, and process wait function. The input values are passed to the tool as args.

from gptscript.command import stream_exec_file

def print_output(out, err):
    # Error stream has the debug info that is useful to see
    for line in err:
        print(line)

    for line in out:
        print(line)

out, err, wait = stream_exec_file("./init.gpt")
print_output(out, err)
wait()

Example Usage

from gptscript.command import exec
from gptscript.tool import FreeForm, Tool

# Define a simple tool
simple_tool = FreeForm(
    content="""
What is the capital of the United States?
"""
)

# Define a complex tool
complex_tool = Tool(
    tools=["sys.write"],
    json_response=True,
    cache=False,
    instructions="""
    Create three short graphic artist descriptions and their muses.
    These should be descriptive and explain their point of view.
    Also come up with a made-up name, they each should be from different
    backgrounds and approach art differently.
    the JSON response format should be:
    {
        artists: [{
            name: "name"
            description: "description"
        }]
    }
    """
)

# Execute the complex tool
response, err = exec(complex_tool)
print(err)
print(response)

# Execute the simple tool
resp, err = exec(simple_tool)
print(err)
print(resp)

Example 2 multiple tools

In this example, multiple tool are provided to the exec function. The first tool is the only one that can exclude the name field. These will be joined and passed into the gptscript as a single gpt script.

from gptscript.command import exec
from gptscript.tool import Tool

tools = [
    Tool(tools=["echo"], instructions="echo hello times"),
    Tool(
        name="echo",
        tools=["sys.exec"],
        description="Echo's the input",
        args={"input": "the string input to echo"},
        instructions="""
        #!/bin/bash
        echo ${input}
        """,
    ),
]

resp, err = exec(tools)
print(err)
print(resp)

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

gptscript-0.3.0.tar.gz (17.7 kB view details)

Uploaded Source

Built Distributions

gptscript-0.3.0-py3-none-win_amd64.whl (6.8 MB view details)

Uploaded Python 3 Windows x86-64

gptscript-0.3.0-py3-none-macosx_10_9_universal2.whl (13.1 MB view details)

Uploaded Python 3 macOS 10.9+ universal2 (ARM64, x86-64)

gptscript-0.3.0-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file gptscript-0.3.0.tar.gz.

File metadata

  • Download URL: gptscript-0.3.0.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for gptscript-0.3.0.tar.gz
Algorithm Hash digest
SHA256 ebcfb2e5ac799114c348fe2f34f290d54775887a86ba91ea2da68ba41e9820fe
MD5 da03e9f53ff86db7e1b3886d7ce2c2e5
BLAKE2b-256 36b666dbf8f03cc96e6faf0b6f28efaaf232c114e6cc20bff7bd14f880f83942

See more details on using hashes here.

File details

Details for the file gptscript-0.3.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: gptscript-0.3.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for gptscript-0.3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3ca63661b3c0cad78954449b10b4459e4679701b82f7f8d4da43a1d7a6977d14
MD5 79d8e4573f60abaad4f9ed8019b7e219
BLAKE2b-256 76b3b7a9019f54f07059b290fc9f55f9f370f60e5043bbc0bd8910d228845114

See more details on using hashes here.

File details

Details for the file gptscript-0.3.0-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gptscript-0.3.0-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14c1addd4e2b44f2df17893229e3c1b16967ba043cd716b31c1ed8f9d5002714
MD5 cbaacddd9efbbc59fc7d720a9d72532a
BLAKE2b-256 2aa05c9b278d949ad6e064a18a5b96e559490f40c87b59b05490ea6f740514e5

See more details on using hashes here.

File details

Details for the file gptscript-0.3.0-py3-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for gptscript-0.3.0-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d6ef47a0d4ba7239e4be0437225e45522c27d449bcd997fb6356a6543dafd693
MD5 33c13973c376ae44102ecd29cdb70d89
BLAKE2b-256 7d82dd590d4896b86f9aa44893b46f79e14ad8a3e5959478b32e49a8fe8e9499

See more details on using hashes here.

File details

Details for the file gptscript-0.3.0-py3-none-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for gptscript-0.3.0-py3-none-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7d70bcc8f0687ca360863a7b53d75c89e833c60ba2e756ab3d51384dda1d7464
MD5 f69732dd3415b64759592a9adf19d9a8
BLAKE2b-256 563e40613c4d5d86144532091efda6808682ca171e60accfe6586382334dfe17

See more details on using hashes here.

File details

Details for the file gptscript-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: gptscript-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for gptscript-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6db374a7e313318f6d3fffcc22c1f7fea4fad278ea4a163d161e89886035f67d
MD5 cc4a7dad09937d024192049f8372c9df
BLAKE2b-256 002e5eee1a396dbcb8eda11ad3fa40a55c78d7e7ffda7d9032ccf514589c7e7c

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