Catalog PyPI
Back to packageRELEASE DETAILS

0.6.1

PyPI

ai-ghostfunctions

AI Ghostfunctions

Published14 Feb 2024
Direct dependencies2
Transitive dependenciesNot calculated

README

Version 0.6.1 documentation

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.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 2

Native requirements
2 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
openai
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8,<4.0",
  "evaluation": "NOT_EVALUATED"
}
openai (>=1,<2)runtime
typeguard
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8,<4.0",
  "evaluation": "NOT_EVALUATED"
}
typeguard (>=3,<5)runtime

Distribution files

2 collected
ai_ghostfunctions-0.6.1-py3-none-any.whl

bdist_wheel · 7.55 KB · Python py3

Source file
ai_ghostfunctions-0.6.1.tar.gz

sdist · 6.57 KB · Python source

Source file

Repository

PENDING
bmritz/ai-ghostfunctions

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 10:48 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:eacc0c2e6eeb71610e254e36331a4f035e8d3a1fc3e3f7c09541bbc0cdc13589

Other collected versions

View all collected versions →