Metadata-Version: 2.1
Name: perplexipy
Version: 0.0.6
Summary: perplexipy - A robust Perplexity AI API client
Author-email: CIME Software Ltd <perplexipy@cime.net>
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: openai (>=1.12.0)
Requires-Dist: python-dotenv

% perplexipy(3) Version 0.0.6 | Perplexity AI high level API documentation

Name
====

**perplexipy** - Perplexity AI high level library


Synopsis
========
```python
client = PerplexityClient() \
print(client.query('What is the meaning of 42?') \
for result in client.queryStreamable('List of all US presidents'): \
    print(result)
```


Description
===========
**perplexipy** is a high-level, convenience library for interacting with the
Perplexity API from any Python 3.9+ application.  The library aims to simplify
all interactions with Perplexity models by encapsulating all the implementation
details of the lower level OpenAI API.  All interaction between the code and
this library occurs in the form of string and native Python objects.

**perplexipy** is implemented from a combination of the Perplexity AI and the
OpenAI documentation.  API semantics follow the "literate programming" workflow,
and attempt to make the resulting code as simple to follow as possible.


Documentation
=============
These documents encompass all information about **perplexipy**:

- This README file, hosted in the **[perplexipy](https://github.com/CIME-Software/perplexipy)**
  project on GitHub and exported to the PyPI project page
- A `man` page autogenerated from this README file, `perplexipy.3`
- The complete **perplexipy API reference**
- The **using-perplexipy.ipynb** tutorial notebook

The `man` page can be generated from the source distribution using this command:

```bash
make manpage
```

The output will reside in:  `./manpages/perplexipy.3`.  The `man` page isn't
included in the Python package wheel because there's no accepted standard
installation that's cross-compatible with all supported operating systems and
distributions.


Installation
============
```bash
pip install perplexipy
```

Package information:  https://pypi.org/project/perplexipy


API key
=======
Access to the Perplexity API requires a paid subscription and an API key.

Use of `.env` is recommended for storing the private key.  There is an automatic
constant `PERPLEXITY_API_KEY` that gets initialized to the value of a `.env` key
of the same name via the `dotenv` API.  Otherwise, `PERPLEXITY_API_KEY` may
be handled like any other secret by the implementing team.  This module provides
no other tools or services for handling the API key.

This key is used only during `PerplexityClient` instantiation:

```python
import os

key = os.environ['PERPLEXITY_API_KEY']
client = PerplexityClient(key = key)
print(client.query('Brief answer:  greet the world in Swedish.'))
```


Usage
=====
See the **using-perplexipy.ipynb** notebook for a richer example of the API's
capabilities.

In general:

```python
client = PerplexityClient()
result = client.query('Show me how to declare a list in Python')
# result is a string

results = client.queryBatch('Show me different ways of declaring a Python list')
for result in results:
    print(result)
    # results is a tuple of one or more results

results = client.queryStreamable('Tell me why lists are important in programming')
for result in results:
    print(result)
    # results is a long stream of data, served over time.

models = client.models # lists all models supported by Perplexity AI

print('Model names:')
for model in models.keys():
    print(' - %s' % model)

try:
    client.model = 'bogus-LLM-7b'
except PerplexityClientError as e:
    print(e)

client.model = models.keys()[0] # OK
```


Async usage
===========
Not supported at this time.


See also
========
- **openai** - https://pipy.org/project/openai
- https://www.perplexity.ai/


Caveats
=======
The code should work with Python 3.7 or later, but it was only tested with
Python 3.9.16 and later.  Download the package and install it from source if
support for an earlier Python version is required.


Bugs
====
Feature requests and bug reports:

https://github.com/CIME-Software/perplexipy/issues

