Skip to main content

Unofficial Claude2 API supporting direct HTTP chat creation/deletion/retrieval, message attachments and auto session gathering using Firefox with geckodriver.

Project description

unofficial-claude2-api

Claude2 unofficial API supporting direct HTTP chat creation/deletion/retrieval, message attachments and auto session gathering using Firefox with geckodriver.

How to install

pip install unofficial-claude2-api

Uninstallation

pip uninstall unofficial-claude2-api

Requirements

These requirements are needed to auto retrieve session cookie and UserAgent using selenium

  • Firefox installed, and with at least one profile logged into Claude.

  • geckodriver installed inside a folder registered in PATH environment variable.


Example Usage

from claude2_api.client import (
    ClaudeAPIClient,
    get_session_data,
    MessageRateLimitHit,
)
import time

# Delay period between subsequent requests
BACKOFF_DELAY_SECONDS = 60

TEXT_FILEPATH = "test.txt"

PDF_FILEPATH = "test.pdf"

# This function will automatically retrieve a SessionData instance using selenium
# Omitting profile argument will use default Firefox profile
data = get_session_data()

# Initialize a client instance using a session
client = ClaudeAPIClient(data)

# Create a new chat and cache the chat_id
chat_id = client.create_chat()

try:
    # Used for textual file attachment
    answer = client.send_text_message(
        chat_id, "Hello!", attachment_path=TEXT_FILEPATH, timeout=240
    )
    print(answer)
except MessageRateLimitHit as e:
    print(f"\nMessage limit hit, resets at {e.resetDate}")
    print(f"\n{e.sleep_sec} seconds left until -> {e.resetTimestamp}")
    quit()
finally:
    # Perform chat deletion for cleanup
    client.delete_chat(chat_id)

# Delay to avoid possible rate limit errors
time.sleep(BACKOFF_DELAY_SECONDS)

# Create another chat for another message
chat_id = client.create_chat()
try:
    # This is used for other attachments file types
    answer = client.send_file_message(
        chat_id, "Hello!", attachment_path=PDF_FILEPATH, timeout=240
    )
    print(answer)
except MessageRateLimitHit as e:
    print(f"\nMessage limit hit, resets at {e.resetDate}")
    print(f"\n{e.sleep_sec} seconds left until -> {e.resetTimestamp}")
    quit()
finally:
    client.delete_chat(chat_id)

# Get a list of all chats ids
all_chat_ids = client.get_all_chat_ids()
# Delete all chats
for chat in all_chat_ids:
    client.delete_chat(chat)

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

unofficial-claude2-api-0.1.1.tar.gz (8.3 kB view hashes)

Uploaded Source

Built Distribution

unofficial_claude2_api-0.1.1-py3-none-any.whl (7.8 kB view hashes)

Uploaded Python 3

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