Metadata-Version: 2.1
Name: sentience
Version: 0.0.2
Summary: 
Author: Kaspar Peterson
Author-email: kaspar@galadriel.com
Requires-Python: >=3.10,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Provides-Extra: dev
Requires-Dist: black (>=24.8.0,<25.0.0) ; extra == "dev"
Requires-Dist: build (>=1.2.2,<2.0.0) ; extra == "dev"
Requires-Dist: openai (>=1.55.3,<2.0.0)
Requires-Dist: pynacl (>=1.5.0,<2.0.0)
Requires-Dist: pytest (>=8.3.2,<9.0.0) ; extra == "dev"
Requires-Dist: pytest-asyncio (==0.24.0) ; extra == "dev"
Requires-Dist: pytest-mock (>=3.14.0,<4.0.0) ; extra == "dev"
Requires-Dist: requests (==2.31.0)
Requires-Dist: twine (>=5.1.1,<6.0.0) ; extra == "dev"
Description-Content-Type: text/markdown

# Galadriel Python SDK - Sentience

### Setup

```
pip install sentience
```

### Usage

Make LLM API call using OpenAI API spec and verify the signature:

```python
import sentience
from openai import OpenAI

client = OpenAI(
    base_url="https://api.galadriel.com/v1/verified",
    api_key="Bearer GALADRIEL_API_KEY",
)

completion = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello!"},
    ],
)

print("completion:", completion)
is_valid = sentience.verify_signature(completion)
print("is_valid:", is_valid)
```

Fetch all previous verified inference requests:
```python
from typing import List
import sentience
from sentience.history import GaladrielChatHistory

history: List[GaladrielChatHistory] = sentience.get_history(
    galadriel_api_key="Bearer GALADRIEL_API_KEY"
)

for item in history:
    print("\n\nResult:")
    print(f"Request: {item.request.get('messages')}")
    print(f"Message: {item.response.choices[0].message}")
    print(f"Hash: {item.hash}")
    print(f"Signed public key: {item.public_key}")
    print(f"Signature: {item.signature}")
    print(f"Tx hash: {item.tx_hash}")
    print(f"Attestation: {item.attestation[:10]}...")

    is_valid = sentience.verify_signature(item)
    print("is_valid:", is_valid)
```

Fetch a single verified inference request by hash:
```python
import sentience
from sentience.history import GaladrielChatHistory

item: GaladrielChatHistory = sentience.get_by_hash(
    galadriel_api_key="Bearer GALADRIEL_API_KEY",
    hash="922e575ef7f07449977001c1caaf78fb6ad8b731cd625434f9215087a6c2b39f"
)
print("\n\nResult:")
print(f"Request: {item.request.get('messages')}")
print(f"Message: {item.response.choices[0].message}")
print(f"Hash: {item.hash}")
print(f"Signed public key: {item.public_key}")
print(f"Signature: {item.signature}")
print(f"Tx hash: {item.tx_hash}")
print(f"Attestation: {item.attestation[:10]}...")

is_valid = sentience.verify_signature(item)
print("is_valid:", is_valid)
```
