RMNCLDYO / perplexity-ai-toolkit

A versatile CLI and Python wrapper for Perplexity's suite of large language models including their flagship Chat and Online 'Sonar Llama-3' models along with `LLama-3 and 'Mixtral'. Streamline the creation of chatbots, and search the web with AI (in real-time) with ease.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Perplexity AI

Perplexity AI Toolkit

maintained - yes contributions - welcome

Perplexity AI

Overview

The Perplexity AI Toolkit makes it easy to use Perplexity Labs' Sonar language models and a suit of open-source models like Mistral, Mixtral, and CodeLlama for creating chatbots, generating text, and searching the web (in real-time). It's designed for everyone, from beginners to experienced developers, allowing quick addition of AI features to projects with simple commands. While it offers simplicity and lightweight integration, it doesn't compromise on power; experienced developers can access the full suite of advanced options available via the API, ensuring robust customization and control. This toolkit is perfect for those looking to efficiently tap into advanced AI without getting bogged down in technical details, yet it still provides the depth needed for complex project requirements.

Key Features

  • Search Functionality: Search online (in real-time) with the help of AI.
  • Chat Functionality: Engage in interactive conversations with Perplexity's advanced conversational models.
  • Command-Line Interface (CLI): Access the full suite of functionalities directly from the command line.
  • Python Wrapper: Simplify interaction with a variety of models in only 2 lines of code.
  • Streamed Responses: Receive responses as they are generated for real-time interaction.
  • Flexible Configuration: Customize the token limits, system prompt, temperature, frequency penalty, and more.
  • Minimal Dependencies: Built to be efficient and lightweight, requiring only the requests package for operation.

Prerequisites

  • Python 3.x
  • An API key from Perplexity AI

Dependencies

The following Python packages are required:

  • requests: For making HTTP requests to the Perplexity API.

The following Python packages are optional:

  • python-dotenv: For managing API keys and other environment variables.

Installation

To use the Perplexity AI Toolkit, clone the repository to your local machine and install the required Python packages.

Clone the repository:

git clone https://github.com/RMNCLDYO/perplexity-ai-toolkit.git

Navigate to the repositories folder:

cd perplexity-ai-toolkit

Install the required dependencies:

pip install -r requirements.txt

Configuration

  1. Obtain an API key from Perplexity.

  2. You have three options for managing your API key:

    Click here to view the API key configuration options
    • Setting it as an environment variable on your device (recommended for everyday use)

      • Navigate to your terminal.
      • Add your API key like so:
        export PERPLEXITY_API_KEY=your_api_key

      This method allows the API key to be loaded automatically when using the wrapper or CLI.

    • Using an .env file (recommended for development):

      • Install python-dotenv if you haven't already: pip install python-dotenv.
      • Create a .env file in the project's root directory.
      • Add your API key to the .env file like so:
        PERPLEXITY_API_KEY=your_api_key

      This method allows the API key to be loaded automatically when using the wrapper or CLI, assuming you have python-dotenv installed and set up correctly.

    • Direct Input:

      • If you prefer not to use a .env file, you can directly pass your API key as an argument to the CLI or the wrapper functions.

        CLI

        --api_key your_api_key

        Wrapper

        api_key="your_api_key"

      This method requires manually inputting your API key each time you initiate an API call, ensuring flexibility for different deployment environments.

Usage

The Perplexity AI Toolkit can be used in two different modes: Chat, and Search. Each mode is designed for specific types of interactions with the language models.

Chat Mode

Chat mode is intended for chatting with an AI model (similar to a chatbot) or building conversational applications.

Example Usage

CLI

python cli.py --chat

Wrapper

from perplexity import Chat

Chat().run()

An executable version of this example can be found here. (You must move this file to the root folder before running the program.)

Search Mode

Search mode is intended for searching online (in real-time) for a single query as perplexity does not support multi-turn conversations with their online models.

Example Usage

CLI

python cli.py --search --query "What is today's date?"

Wrapper

from perplexity import Search

Search().run(query="What is today's date?")

An executable version of this example can be found here. (You must move this file to the root folder before running the program.)

Advanced Configuration

CLI and Wrapper Options

Description CLI Flags CLI Usage Wrapper Usage
Enable chat mode -c, --chat --chat See mode usage above
Enable online search mode -s, --search --search See mode usage above
Online search query -q, --query --query "What is today's date?" query="What is today's date?"
User prompt -p, --prompt --prompt "How are you doing today my ai friend?" prompt="How are you doing today my ai friend?"
API key for authentication -a, --api_key --api_key your_api_key api_key="your_api_key"
Model name -m, --model --model "sonar-medium-chat" model="sonar-medium-online"
Enable streaming mode -st, --stream --stream stream=True
System prompt (instructions) -sp, --system_prompt --system_prompt "You are an advanced ai assistant" system_prompt="You are an advanced ai assistant"
Maximum tokens to generate -mt, --max_tokens --max_tokens 100 max_tokens=100
Sampling temperature -tm, --temperature --temperature 0.7 temperature=0.7
Nucleus sampling threshold -tp, --top_p --top_p 0.9 top_p=0.9
Top-k sampling threshold -tk, --top_k --top_k 40 top_k=40
Penalize tokens based on their presence -pp, --presence_penalty --presence_penalty 0.5 presence_penalty=0.5
Penalize tokens based on their frequency -fp, --frequency_penalty --frequency_penalty 0.5 frequency_penalty=0.5

Available Models

Perplexity Models

Model Max Tokens
sonar-small-chat 16384
sonar-small-online 12000
sonar-medium-chat 16384
sonar-medium-online 12000

Open-Source Models

Where possible, Perplexity tries to match the Hugging Face implementation.

Model Max Tokens
codellama-70b-instruct 16384
mistral-7b-instruct [1] 16384
mixtral-8x7b-instruct 16384

[1] This model refers to the v0.2 release of mistral-7b-instruct.

Online LLMs

It is recommended to use only single-turn conversations and avoid system prompts for the online LLMs (sonar-small-online and sonar-medium-online).

Contributing

Contributions are welcome!

Please refer to CONTRIBUTING.md for detailed guidelines on how to contribute to this project.

Reporting Issues

Encountered a bug? We'd love to hear about it. Please follow these steps to report any issues:

  1. Check if the issue has already been reported.
  2. Use the Bug Report template to create a detailed report.
  3. Submit the report here.

Your report will help us make the project better for everyone.

Feature Requests

Got an idea for a new feature? Feel free to suggest it. Here's how:

  1. Check if the feature has already been suggested or implemented.
  2. Use the Feature Request template to create a detailed request.
  3. Submit the request here.

Your suggestions for improvements are always welcome.

Versioning and Changelog

Stay up-to-date with the latest changes and improvements in each version:

  • CHANGELOG.md provides detailed descriptions of each release.

Security

Your security is important to us. If you discover a security vulnerability, please follow our responsible disclosure guidelines found in SECURITY.md. Please refrain from disclosing any vulnerabilities publicly until said vulnerability has been reported and addressed.

License

Licensed under the MIT License. See LICENSE for details.

About

A versatile CLI and Python wrapper for Perplexity's suite of large language models including their flagship Chat and Online 'Sonar Llama-3' models along with `LLama-3 and 'Mixtral'. Streamline the creation of chatbots, and search the web with AI (in real-time) with ease.

License:MIT License


Languages

Language:Python 100.0%