Skip to content
This repository has been archived by the owner on Aug 12, 2024. It is now read-only.

Commit

Permalink
Merge pull request #48 from premAI-io/perplexity
Browse files Browse the repository at this point in the history
Perplexity Provider.
  • Loading branch information
filopedraz authored Feb 26, 2024
2 parents 3526a88 + 892c945 commit d2b68e2
Show file tree
Hide file tree
Showing 3 changed files with 132 additions and 2 deletions.
8 changes: 6 additions & 2 deletions e2e.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
mistral,
octoai,
openai,
perplexity,
prem,
replicate,
together,
Expand Down Expand Up @@ -71,6 +72,7 @@ def run_single_connector(connector_name: str) -> None:
"mistralai": (mistral.MistralConnector, "MISTRAL_AI_API_KEY"),
"prem": (prem.PremConnector, "PREMAI_BEARER_TOKEN"),
"deepinfra": (openai.OpenAIConnector, "DEEP_INFRA_API_KEY"),
"perplexity": (perplexity.PerplexityAIConnector, "PERPLEXITY_API_KEY"),
}

if connector_name == "deepinfra":
Expand Down Expand Up @@ -99,10 +101,12 @@ def run_single_connector(connector_name: str) -> None:

if len(text2text_models) > 0:
model_object = text2text_models[0]

parameters = {}
parameters["model"] = model_object["slug"]
messages = [{"role": "user", "content": "Hello, how is it going?"}]
messages.append({"role": "system", "content": "Behave like Rick Sanchez."})

messages = [{"role": "system", "content": "Behave like Rick Sanchez."}]
messages.append({"role": "user", "content": "Hello, how is it going?"})
parameters["messages"] = messages

print(f"Testing model {model_object['slug']} from {connector['provider']} connector \n\n\n")
Expand Down
75 changes: 75 additions & 0 deletions prem_utils/connectors/perplexity.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
from collections.abc import Sequence
from typing import Any

from prem_utils.connectors.openai import OpenAIConnector


class PerplexityAIConnector(OpenAIConnector):
def __init__(self, api_key: str, base_url: str = "https://api.perplexity.ai", prompt_template: str = None) -> None:
super().__init__(prompt_template=prompt_template, base_url=base_url, api_key=api_key)

def chat_completion(
self,
model: str,
messages: list[dict[str, Any]],
max_tokens: int = None,
frequency_penalty: float = 0.1,
log_probs: int = None,
logit_bias: dict[str, float] = None,
presence_penalty: float = 0,
seed: int | None = None,
stop: str | list[str] = None,
stream: bool = False,
temperature: float = 1,
top_p: float = 1,
tools: list[dict[str, Any]] = None,
tool_choice: dict = None,
):
if "perplexity" in model:
model = model.replace("perplexity/", "", 1)

return super().chat_completion(
model,
messages,
max_tokens,
frequency_penalty,
log_probs,
logit_bias,
presence_penalty,
seed,
stop,
stream,
temperature,
top_p,
tools,
tool_choice,
)

def embeddings(
self,
model: str,
input: str | Sequence[str] | Sequence[int] | Sequence[Sequence[int]],
encoding_format: str = "float",
user: str = None,
):
raise NotImplementedError

def finetuning(
self, model: str, training_data: list[dict], validation_data: list[dict] | None = None, num_epochs: int = 3
) -> str:
raise NotImplementedError

def get_finetuning_job(self, job_id) -> dict[str, Any]:
raise NotImplementedError

def generate_image(
self,
model: str,
prompt: str,
size: str = "1024x1024",
n: int = 1,
quality: str = "standard",
style: str = "vivid",
response_format: str = "url",
):
raise NotImplementedError
51 changes: 51 additions & 0 deletions prem_utils/models.json
Original file line number Diff line number Diff line change
Expand Up @@ -623,6 +623,57 @@
"coming_soon": true
}
]
},

{
"provider": "perplexity",
"models": [
{
"slug": "perplexity/codellama-34b-instruct",
"model_type": "text2text",
"context_window": 16384
},
{
"slug": "perplexity/codellama-70b-instruct",
"model_type": "text2text",
"context_window": 16384
},
{
"slug": "perplexity/llama-2-70b-chat",
"model_type": "text2text",
"context_window": 4096
},
{
"slug": "perplexity/mistral-7b-instruct",
"model_type": "text2text",
"context_window": 8192
},
{
"slug": "perplexity/mixtral-8x7b-instruct",
"model_type": "text2text",
"context_window": 8192
},
{
"slug": "perplexity/pplx-7b-chat",
"model_type": "text2text",
"context_window": 8192
},
{
"slug": "perplexity/pplx-70b-chat",
"model_type": "text2text",
"context_window": 8192
},
{
"slug": "perplexity/pplx-7b-online",
"model_type": "text2text",
"context_window": 8192
},
{
"slug": "perplexity/pplx-70b-online",
"model_type": "text2text",
"context_window": 8192
}
]
}
]
}

0 comments on commit d2b68e2

Please sign in to comment.