Skip to main content

A Python client for the Openperplex API

Project description

Openperplex Python Library Documentation

The Openperplex Python library provides an interface to interact with the Openperplex API, allowing you to perform various search and web-related operations.

Installation

To install the Openperplex library, use pip:

pip install --upgrade openperplex

Initialization

To use the Openperplex library, you need to initialize it with your API key:

from openperplex import OpenperplexSync, OpenperplexAsync

api_key = "your_openperplex_api_key_here"
client_sync = OpenperplexSync(api_key)
client_async = OpenperplexAsync(api_key)

Available Methods

The library provides both synchronous and asynchronous versions of its methods. Here are the available methods:

1. search / search_stream

Perform a search query, either as a single response or as a stream.

Synchronous:

# Non-streaming search
result = client_sync.search(
    query="What are the latest developments in AI?",
    date_context="2024-08-25",
    location="us",
    pro_mode=False,
    response_language="en",
    answer_type="text",
    verbose_mode=False,
    search_type="general",
    return_citations=False,
    return_sources=False,
    return_images=False
)

print(result)

# Streaming search
for chunk in client_sync.search_stream(
    query="Explain quantum computing",
    date_context="2024-08-25",
    location="us",
    pro_mode=False,
    response_language="en",
    answer_type="text",
    verbose_mode=False,
    search_type="general",
    return_citations=False,
    return_sources=False,
    return_images=False
):
    print(chunk)

Asynchronous:

import asyncio

async def search_async():
    # Non-streaming search
    result = await client_async.search(
        query="What are the latest developments in AI?",
        date_context="2024-08-25",
        location="us",
        pro_mode=False,
        response_language="en",
        answer_type="text",
        verbose_mode=False,
        search_type="general",
        return_citations=False,
        return_sources=False,
        return_images=False
    )
    print(result)

    # Streaming search
    async for chunk in client_async.search_stream(
        query="Explain quantum computing",
        date_context="2024-08-25",
        location="us",
        pro_mode=False,
        response_language="en",
        answer_type="text",
        verbose_mode=False,
        search_type="general",
        return_citations=False,
        return_sources=False,
        return_images=False
    ):
        print(chunk)

asyncio.run(search_async())

2. get_website_text

Retrieve the text content of a website.

Synchronous:

result = client_sync.get_website_text("https://www.example.com")
print(result)

Asynchronous:

result = await client_async.get_website_text("https://www.example.com")
print(result)

3. get_website_screenshot

Get a screenshot of a website.

Synchronous:

result = client_sync.get_website_screenshot("https://www.example.com")
print(result)

Asynchronous:

result = await client_async.get_website_screenshot("https://www.example.com")
print(result)

4. get_website_markdown

Get the markdown representation of a website.

Synchronous:

result = client_sync.get_website_markdown("https://www.example.com")
print(result)

Asynchronous:

result = await client_async.get_website_markdown("https://www.example.com")
print(result)

5. query_from_url

Perform a query based on the content of a specific URL.

Synchronous:

response = client_sync.query_from_url(
    url="https://www.example.com/article",
    query="What is the main topic of this article?",
    response_language="en",
    answer_type="text"
)
print(response)

Asynchronous:

response = await client_async.query_from_url(
    url="https://www.example.com/article",
    query="What is the main topic of this article?",
    response_language="en",
    answer_type="text"
)
print(response)

6. custom_search / custom_search_stream

Perform a custom search query with a system prompt and user prompt.

Synchronous:

# Non-streaming custom search
result = client_sync.custom_search(
    system_prompt="You are a helpful assistant.",
    user_prompt="Explain the theory of relativity",
    location="us",
    pro_mode=False,
    search_type="general",
    return_images=False,
    return_sources=False,
    temperature=0.2,
    top_p=0.9
)
print(result)

# Streaming custom search
for chunk in client_sync.custom_search_stream(
    system_prompt="You are a helpful assistant.",
    user_prompt="Explain the theory of relativity",
    location="us",
    pro_mode=False,
    search_type="general",
    return_images=False,
    return_sources=False,
    temperature=0.2,
    top_p=0.9
):
    print(chunk)

Asynchronous:

# Non-streaming custom search
result = await client_async.custom_search(
    system_prompt="You are a helpful assistant.",
    user_prompt="Explain the theory of relativity",
    location="us",
    pro_mode=False,
    search_type="general",
    return_images=False,
    return_sources=False,
    temperature=0.2,
    top_p=0.9
)
print(result)

# Streaming custom search
async for chunk in client_async.custom_search_stream(
    system_prompt="You are a helpful assistant.",
    user_prompt="Explain the theory of relativity",
    location="us",
    pro_mode=False,
    search_type="general",
    return_images=False,
    return_sources=False,
    temperature=0.2,
    top_p=0.9
):
    print(chunk)

Parameters

Common Parameters

  • query: The search query or question.
  • date_context: String Optional date for context (format: "today is 8 of october and time is 4 PM" or "YYYY-MM-DD HH:MM AM/PM"). If empty, the current date of the API server is used.
  • location: Country code for search context. Default is "us".
  • pro_mode: Boolean to enable or disable pro mode. Default is False.
  • response_language: Language code for the response. Default is "auto" (auto-detect).
  • answer_type: Type of answer format. Options are "text" (default), "markdown", or "html".
  • verbose_mode: Boolean to enable or disable verbose mode. Default is False.
  • search_type: Type of search to perform (general or news). Default is "general".
  • return_citations: Boolean to indicate whether to return citations. Default is False.
  • return_sources: Boolean to indicate whether to return sources. Default is False.
  • return_images: Boolean to indicate whether to return images. Default is False.

Custom Search Parameters

  • system_prompt: The system prompt for custom search.
  • user_prompt: The user prompt for custom search.
  • temperature: Float value to control the randomness of the output. Default is 0.2.
  • top_p: Float value to control the diversity of the output. Default is 0.9.
  • search_type: Type of search to perform (general or news). Default is "general".

Supported Locations

The location parameter accepts the following country codes:

๐Ÿ‡บ๐Ÿ‡ธ us (United States), ๐Ÿ‡จ๐Ÿ‡ฆ ca (Canada), ๐Ÿ‡ฌ๐Ÿ‡ง uk (United Kingdom), ๐Ÿ‡ฒ๐Ÿ‡ฝ mx (Mexico), ๐Ÿ‡ช๐Ÿ‡ธ es (Spain), ๐Ÿ‡ฉ๐Ÿ‡ช de (Germany), ๐Ÿ‡ซ๐Ÿ‡ท fr (France), ๐Ÿ‡ต๐Ÿ‡น pt (Portugal), ๐Ÿ‡ณ๐Ÿ‡ฑ nl (Netherlands), ๐Ÿ‡น๐Ÿ‡ท tr (Turkey), ๐Ÿ‡ฎ๐Ÿ‡น it (Italy), ๐Ÿ‡ต๐Ÿ‡ฑ pl (Poland), ๐Ÿ‡ท๐Ÿ‡บ ru (Russia), ๐Ÿ‡ฟ๐Ÿ‡ฆ za (South Africa), ๐Ÿ‡ฆ๐Ÿ‡ช ae (United Arab Emirates), ๐Ÿ‡ธ๐Ÿ‡ฆ sa (Saudi Arabia), ๐Ÿ‡ฆ๐Ÿ‡ท ar (Argentina), ๐Ÿ‡ง๐Ÿ‡ท br (Brazil), ๐Ÿ‡ฆ๐Ÿ‡บ au (Australia), ๐Ÿ‡จ๐Ÿ‡ณ cn (China), ๐Ÿ‡ฐ๐Ÿ‡ท kr (Korea), ๐Ÿ‡ฏ๐Ÿ‡ต jp (Japan), ๐Ÿ‡ฎ๐Ÿ‡ณ in (India), ๐Ÿ‡ต๐Ÿ‡ธ ps (Palestine), ๐Ÿ‡ฐ๐Ÿ‡ผ kw (Kuwait), ๐Ÿ‡ด๐Ÿ‡ฒ om (Oman), ๐Ÿ‡ถ๐Ÿ‡ฆ qa (Qatar), ๐Ÿ‡ฎ๐Ÿ‡ฑ il (Israel), ๐Ÿ‡ฒ๐Ÿ‡ฆ ma (Morocco), ๐Ÿ‡ช๐Ÿ‡ฌ eg (Egypt), ๐Ÿ‡ฎ๐Ÿ‡ท ir (Iran), ๐Ÿ‡ฑ๐Ÿ‡พ ly (Libya), ๐Ÿ‡พ๐Ÿ‡ช ye (Yemen), ๐Ÿ‡ฎ๐Ÿ‡ฉ id (Indonesia), ๐Ÿ‡ต๐Ÿ‡ฐ pk (Pakistan), ๐Ÿ‡ง๐Ÿ‡ฉ bd (Bangladesh), ๐Ÿ‡ฒ๐Ÿ‡พ my (Malaysia), ๐Ÿ‡ต๐Ÿ‡ญ ph (Philippines), ๐Ÿ‡น๐Ÿ‡ญ th (Thailand), ๐Ÿ‡ป๐Ÿ‡ณ vn (Vietnam)

Supported Languages

The response_language parameter accepts the following language codes:

  • auto: Auto-detect the user question language (default)
  • en: English
  • fr: French
  • es: Spanish
  • de: German
  • it: Italian
  • pt: Portuguese
  • nl: Dutch
  • ja: Japanese
  • ko: Korean
  • zh: Chinese
  • ar: Arabic
  • ru: Russian
  • tr: Turkish
  • hi: Hindi

Error Handling

The library raises OpenperplexError exceptions for API errors. Always wrap your API calls in try-except blocks:

from openperplex import OpenperplexSync, OpenperplexError

try:
    result = client_sync.search("AI advancements")
    print(result)
except OpenperplexError as e:
    print(f"An error occurred: {e}")

Remember to handle potential network errors and other exceptions as needed in your application.

Best Practices

  1. API Key Security: Never hard-code your API key in your source code. Use environment variables or secure configuration management.

  2. Error Handling: Always implement proper error handling to manage API errors and network issues gracefully.

  3. Asynchronous Usage: For applications that need to handle multiple requests concurrently, consider using the asynchronous version of the client.

  4. Streaming Responses: When using search_stream or custom_search_stream, remember to handle the streaming nature of the response appropriately in your application.

  5. Pro Mode: Use pro_mode=True when you need advanced search features, but be aware that it might be slower.

  6. Date Context: When historical context is important for your query, always specify the date_context parameter.

  7. Localization: Use the location and response_language parameters to get more relevant and localized results.

Conclusion

The Openperplex Python library provides a powerful interface to access advanced search and web analysis capabilities. By leveraging its various methods and parameters, you can create sophisticated applications that can understand and process web content in multiple languages and contexts.

For any issues, feature requests, or further questions, please open an issue.

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

openperplex-0.2.0.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

openperplex-0.2.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file openperplex-0.2.0.tar.gz.

File metadata

  • Download URL: openperplex-0.2.0.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.2

File hashes

Hashes for openperplex-0.2.0.tar.gz
Algorithm Hash digest
SHA256 823099afd44dc1ebdaec7173bf118fc275741cf13f7de4996fe5d3548d48c553
MD5 fb282d81d839f1e97881a60cd2f2c651
BLAKE2b-256 ea8fc729c0b79b23b2ecdbc8452603754cc07774209c4a593f8aa8e966b529ea

See more details on using hashes here.

File details

Details for the file openperplex-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: openperplex-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.2

File hashes

Hashes for openperplex-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ddaf41cd60f5af0b6f3c86d9a2a26cc836e687a35e3d268e369f24fc00b757b5
MD5 37542e6b89c738cf8d146ad133f60841
BLAKE2b-256 7be80e1cfe1a24f3e4b2ab30bc19282ad4272b5f39ecce93bc0fd22bebc0b8ff

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