Skip to main content

AI Ghostfunctions

Project description

AI Ghostfunctions

Write the docstring, call the function, get the results.

PyPI Status Tests License

Documentation: https://ai-ghostfunctions.readthedocs.io/

A ghostfunction leverages OpenAI GPT-4 to return sensible outputs from functions without defined logic. It packages the the function name, docstring, and signature into a prompt which is sent to OpenAI's GPT-4 API, and transparently handles coercing the api result into the expected return type.

Installation

pip install ai-ghostfunctions

Quickstart

To see it in action, save your OpenAI API Key to the env var OPENAI_API_KEY and run:

>>> import os
>>> from ai_ghostfunctions import ghostfunction

>>> assert os.getenv("OPENAI_API_KEY")

>>> @ghostfunction
>>> def sanitize_messy_string(messy_string: str) -> list[dict]:
>>>     """Return a list of dicts that contain the data from `messy_string`."""
>>>     pass

>>> sanitize_messy_string(messy_string="""name|age|nickname
John Brighton Bradford,  34,  J.B
     Grace B., "24", Grace""")

[{'name': 'John Brighton Bradford', 'age': 34, 'nickname': 'J.B'},
 {'name': 'Grace B.', 'age': 24, 'nickname': 'Grace'}]

###

>>> @ghostfunction
>>> def generate_random_words(n: int, startswith: str) -> list:
>>>     """Return a list of `n` random words that start with `startswith`."""
>>>     pass

>>> generate_random_words(n=4, startswith="goo")
['goofy', 'google', 'goose', 'goodness']

>>> generate_random_words(n=3, startswith="foot")
['football', 'footnote', 'footprint']

By default, a ghostfunction will dispatch a sensible prompt to OpenAI GPT-4 that includes the function name, the docstring, and function arguments, parse the result from OpenAI and return it as the result of the function.

Ghostfunctions will retry and send the data to gpt-3.5-turbo if it looks like the OPENAI_API_KEY does not have access to gpt-4.

Customizations

You can control the prompt:

>>> import os
>>> from ai_ghostfunctions import ghostfunction
>>> from ai_ghostfunctions.keywords import USER
>>> from ai_ghostfunctions.types import Message

>>> assert os.getenv("OPENAI_API_KEY")

>>> @ghostfunction(prompt_function=lambda f, **kwargs: [
>>>     Message(role=USER, content=f"tell me a slightly insulting joke about this function name: {f.__name__}.")
>>> ])
>>> def recursive_function_that_will_recurse():
>>>     """Recurse until you go crazy."""
>>>     pass

>>> recursive_function_that_will_recurse()
# 'Why did the programmer name his function "recursive_function_that_will_recurse"? Because he wanted to make absolutely sure that no one would confuse it for a function that actually does something useful.'

Heh. Not bad.

Prompts to gpt-4 and gpt-3.5-turbo are of type List[ai_ghostfunctions.types.Message].

See ghostfunctions.py for the default prompt.

License

License AI Ghostfunctions is free and open source software.

Requirements

See pyproject.toml for a list of dependencies.

Contributing

Contributions are very welcome. To learn more about setting up a dev environment and contributing back to the project, see the Contributor Guide.

Issues

If you encounter any problems, please file an issue along with a detailed description.

Credits

This project was generated from a fork of @cjolowicz's Hypermodern Python Cookiecutter template.

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

ai_ghostfunctions-0.6.1.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

ai_ghostfunctions-0.6.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file ai_ghostfunctions-0.6.1.tar.gz.

File metadata

  • Download URL: ai_ghostfunctions-0.6.1.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.8

File hashes

Hashes for ai_ghostfunctions-0.6.1.tar.gz
Algorithm Hash digest
SHA256 8a4ce46416d61829468d7431f723072415a498c096dfcb8ae3be94220d702c6d
MD5 67ec28a8eabe49b82f1dc0eb818b9442
BLAKE2b-256 83f2a7fa498ac17d78ac2189b04a1182be71bd2d899226a70c45b6bd9fe34c5f

See more details on using hashes here.

File details

Details for the file ai_ghostfunctions-0.6.1-py3-none-any.whl.

File metadata

File hashes

Hashes for ai_ghostfunctions-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0f247549c8fc1a324082e90c85b97ad65d6cb1a7db6727133825b9f8f12e52bd
MD5 210f372a0ce2f181b209bb2625ce3d3f
BLAKE2b-256 f209cd7520ee36aeecee066f720e4979a6164f0a74a6e64b81a2000af2540faa

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