Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .claude/skills/opengradient/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ client.llm.ensure_opg_approval(opg_amount=5)

| Provider | Models |
|------------|--------|
| OpenAI | `GPT_4_1_2025_04_14`, `GPT_4O`, `O4_MINI` |
| Anthropic | `CLAUDE_3_7_SONNET`, `CLAUDE_3_5_HAIKU`, `CLAUDE_4_0_SONNET` |
| Google | `GEMINI_2_5_FLASH`, `GEMINI_2_5_PRO`, `GEMINI_2_0_FLASH`, `GEMINI_2_5_FLASH_LITE` |
| xAI | `GROK_3_MINI_BETA`, `GROK_3_BETA`, `GROK_2_1212`, `GROK_4_1_FAST`, `GROK_4_1_FAST_NON_REASONING` |
| OpenAI | `GPT_4_1_2025_04_14`, `O4_MINI`, `GPT_5`, `GPT_5_MINI`, `GPT_5_2` |
| Anthropic | `CLAUDE_SONNET_4_5`, `CLAUDE_SONNET_4_6`, `CLAUDE_HAIKU_4_5`, `CLAUDE_OPUS_4_5`, `CLAUDE_OPUS_4_6` |
| Google | `GEMINI_2_5_FLASH`, `GEMINI_2_5_PRO`, `GEMINI_2_5_FLASH_LITE`, `GEMINI_3_PRO`, `GEMINI_3_FLASH` |
| xAI | `GROK_4`, `GROK_4_FAST`, `GROK_4_1_FAST`, `GROK_4_1_FAST_NON_REASONING` |

## Settlement Modes (`og.x402SettlementMode`)

Expand Down Expand Up @@ -117,7 +117,7 @@ tools = [{
}]

result = client.llm.chat(
model=og.TEE_LLM.GPT_4O,
model=og.TEE_LLM.GPT_5,
messages=[{"role": "user", "content": "Weather in NYC?"}],
tools=tools,
max_tokens=200,
Expand All @@ -138,7 +138,7 @@ messages = [

for _ in range(max_iterations):
result = client.llm.chat(
model=og.TEE_LLM.GPT_4O,
model=og.TEE_LLM.GPT_5,
messages=messages,
tools=tools,
tool_choice="auto",
Expand Down
21 changes: 12 additions & 9 deletions .claude/skills/opengradient/api-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,25 +106,28 @@ Returned by `client.alpha.infer()`.

### OpenAI
- `GPT_4_1_2025_04_14`
- `GPT_4O`
- `O4_MINI`
- `GPT_5`
- `GPT_5_MINI`
- `GPT_5_2`

### Anthropic
- `CLAUDE_3_7_SONNET`
- `CLAUDE_3_5_HAIKU`
- `CLAUDE_4_0_SONNET`
- `CLAUDE_SONNET_4_5`
- `CLAUDE_SONNET_4_6`
- `CLAUDE_HAIKU_4_5`
- `CLAUDE_OPUS_4_5`
- `CLAUDE_OPUS_4_6`

### Google
- `GEMINI_2_5_FLASH`
- `GEMINI_2_5_PRO`
- `GEMINI_2_0_FLASH`
- `GEMINI_2_5_FLASH_LITE`
- `GEMINI_3_PRO`
- `GEMINI_3_FLASH`

### xAI (Grok)
- `GROK_3_MINI_BETA`
- `GROK_3_BETA`
- `GROK_2_1212`
- `GROK_2_VISION_LATEST`
- `GROK_4`
- `GROK_4_FAST`
- `GROK_4_1_FAST`
- `GROK_4_1_FAST_NON_REASONING`

Expand Down
19 changes: 13 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# OpenGradient SDK Makefile

# Default model for testing (override with: make chat MODEL=openai/gpt-4o)
MODEL ?= anthropic/claude-3.7-sonnet
# Default model for testing (override with: make chat MODEL=google/gemini-3-pro-preview)
MODEL ?= google/gemini-3-pro-preview

# ============================================================================
# Development
Expand Down Expand Up @@ -67,24 +67,31 @@ infer:

completion:
python -m opengradient.cli completion \
--model $(MODEL) --mode TEE \
--model $(MODEL) \
--prompt "Hello, how are you?" \
--max-tokens 50

chat:
python -m opengradient.cli chat \
--model $(MODEL) \
--messages '[{"role":"user","content":"Tell me a fun fact"}]' \
--max-tokens 150
--max-tokens 350

chat-stream:
python -m opengradient.cli chat \
--model $(MODEL) \
--messages '[{"role":"user","content":"Tell me a short story"}]' \
--max-tokens 250 \
--max-tokens 1250 \
--stream

chat-tool:
python -m opengradient.cli chat \
--model $(MODEL) \
--messages '[{"role":"user","content":"What is the weather in Tokyo?"}]' \
--tools '[{"type":"function","function":{"name":"get_weather","description":"Get weather for a location","parameters":{"type":"object","properties":{"location":{"type":"string"},"unit":{"type":"string","enum":["celsius","fahrenheit"]}},"required":["location"]}}}]' \
--max-tokens 100

chat-stream-tool:
python -m opengradient.cli chat \
--model $(MODEL) \
--messages '[{"role":"user","content":"What is the weather in Tokyo?"}]' \
Expand All @@ -93,4 +100,4 @@ chat-tool:
--stream

.PHONY: install build publish check docs test utils_test client_test langchain_adapter_test opg_token_test integrationtest examples \
infer completion chat chat-stream chat-tool
infer completion chat chat-stream chat-tool chat-stream-tool
31 changes: 17 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ See [Payment Settlement](#payment-settlement) for details on settlement modes.
OpenGradient provides secure, verifiable inference through Trusted Execution Environments. All supported models include cryptographic attestation verified by the OpenGradient network:
```python
completion = client.llm.chat(
model=og.TEE_LLM.GPT_4O,
model=og.TEE_LLM.GPT_5,
messages=[{"role": "user", "content": "Hello!"}],
)
print(f"Response: {completion.chat_output['content']}")
Expand All @@ -112,7 +112,7 @@ print(f"Transaction hash: {completion.transaction_hash}")
For real-time generation, enable streaming:
```python
stream = client.llm.chat(
model=og.TEE_LLM.CLAUDE_3_7_SONNET,
model=og.TEE_LLM.CLAUDE_SONNET_4_6,
messages=[{"role": "user", "content": "Explain quantum computing"}],
max_tokens=500,
stream=True,
Expand All @@ -133,7 +133,7 @@ import opengradient as og

llm = og.agents.langchain_adapter(
private_key=os.environ.get("OG_PRIVATE_KEY"),
model_cid=og.TEE_LLM.GPT_4O,
model_cid=og.TEE_LLM.GPT_5,
)

@tool
Expand All @@ -154,25 +154,28 @@ The SDK provides access to models from multiple providers via the `og.TEE_LLM` e

#### OpenAI
- GPT-4.1 (2025-04-14)
- GPT-4o
- o4-mini
- GPT-5
- GPT-5 Mini
- GPT-5.2

#### Anthropic
- Claude 3.7 Sonnet
- Claude 3.5 Haiku
- Claude 4.0 Sonnet
- Claude Sonnet 4.5
- Claude Sonnet 4.6
- Claude Haiku 4.5
- Claude Opus 4.5
- Claude Opus 4.6

#### Google
- Gemini 2.5 Flash
- Gemini 2.5 Pro
- Gemini 2.0 Flash
- Gemini 2.5 Flash Lite
- Gemini 3 Pro
- Gemini 3 Flash

#### xAI
- Grok 3 Beta
- Grok 3 Mini Beta
- Grok 2 (1212)
- Grok 2 Vision
- Grok 4
- Grok 4 Fast
- Grok 4.1 Fast (reasoning and non-reasoning)

For a complete list, reference the `og.TEE_LLM` enum or consult the [API documentation](https://docs.opengradient.ai/api_reference/python_sdk/).
Expand Down Expand Up @@ -262,7 +265,7 @@ opengradient infer -m QmbUqS93oc4JTLMHwpVxsE39mhNxy6hpf6Py3r9oANr8aZ \

Run a chat completion:
```bash
opengradient chat --model anthropic/claude-3.5-haiku \
opengradient chat --model anthropic/claude-haiku-4-5 \
--messages '[{"role":"user","content":"Hello"}]' \
--max-tokens 100
```
Expand Down Expand Up @@ -297,7 +300,7 @@ OpenGradient supports multiple settlement modes through the x402 payment protoco
Specify settlement mode in your requests:
```python
result = client.llm.chat(
model=og.TEE_LLM.GPT_4O,
model=og.TEE_LLM.GPT_5,
messages=[{"role": "user", "content": "Hello"}],
x402_settlement_mode=og.x402SettlementMode.SETTLE_BATCH,
)
Expand Down
31 changes: 17 additions & 14 deletions docs/CLAUDE_SDK_USERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ client = og.Client(

# LLM Chat (TEE-verified with x402 payments)
result = client.llm.chat(
model=og.TEE_LLM.CLAUDE_3_5_HAIKU,
model=og.TEE_LLM.CLAUDE_HAIKU_4_5,
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=100,
)
Expand Down Expand Up @@ -108,25 +108,28 @@ All LLM models are TEE-verified. `og.LLM` and `og.TEE_LLM` contain the same mode
```python
# OpenAI
og.TEE_LLM.GPT_4_1_2025_04_14
og.TEE_LLM.GPT_4O
og.TEE_LLM.O4_MINI
og.TEE_LLM.GPT_5
og.TEE_LLM.GPT_5_MINI
og.TEE_LLM.GPT_5_2

# Anthropic
og.TEE_LLM.CLAUDE_3_7_SONNET
og.TEE_LLM.CLAUDE_3_5_HAIKU
og.TEE_LLM.CLAUDE_4_0_SONNET
og.TEE_LLM.CLAUDE_SONNET_4_5
og.TEE_LLM.CLAUDE_SONNET_4_6
og.TEE_LLM.CLAUDE_HAIKU_4_5
og.TEE_LLM.CLAUDE_OPUS_4_5
og.TEE_LLM.CLAUDE_OPUS_4_6

# Google
og.TEE_LLM.GEMINI_2_5_FLASH
og.TEE_LLM.GEMINI_2_5_PRO
og.TEE_LLM.GEMINI_2_0_FLASH
og.TEE_LLM.GEMINI_2_5_FLASH_LITE
og.TEE_LLM.GEMINI_3_PRO
og.TEE_LLM.GEMINI_3_FLASH

# xAI
og.TEE_LLM.GROK_3_BETA
og.TEE_LLM.GROK_3_MINI_BETA
og.TEE_LLM.GROK_2_1212
og.TEE_LLM.GROK_2_VISION_LATEST
og.TEE_LLM.GROK_4
og.TEE_LLM.GROK_4_FAST
og.TEE_LLM.GROK_4_1_FAST
og.TEE_LLM.GROK_4_1_FAST_NON_REASONING
```
Expand All @@ -137,7 +140,7 @@ All models are accessed through the OpenGradient TEE infrastructure with x402 pa

```python
result = client.llm.chat(
model=og.TEE_LLM.GPT_4O,
model=og.TEE_LLM.GPT_5,
messages=[{"role": "user", "content": "Hello"}],
)
```
Expand All @@ -163,7 +166,7 @@ tools = [{
}]

result = client.llm.chat(
model=og.TEE_LLM.CLAUDE_3_7_SONNET,
model=og.TEE_LLM.CLAUDE_SONNET_4_6,
messages=[{"role": "user", "content": "What's the weather in NYC?"}],
tools=tools,
tool_choice="auto",
Expand All @@ -178,7 +181,7 @@ if result.chat_output.get("tool_calls"):

```python
stream = client.llm.chat(
model=og.TEE_LLM.CLAUDE_3_7_SONNET,
model=og.TEE_LLM.CLAUDE_SONNET_4_6,
messages=[{"role": "user", "content": "Tell me a story"}],
stream=True,
)
Expand All @@ -197,7 +200,7 @@ from langgraph.prebuilt import create_react_agent
# Create LangChain-compatible LLM
llm = og.agents.langchain_adapter(
private_key=os.environ["OG_PRIVATE_KEY"],
model_cid=og.LLM.CLAUDE_3_7_SONNET,
model_cid=og.LLM.CLAUDE_SONNET_4_6,
max_tokens=300,
)

Expand Down
2 changes: 1 addition & 1 deletion examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ LLM chat pattern:

```python
completion = og_client.llm.chat(
model=og.TEE_LLM.CLAUDE_3_5_HAIKU,
model=og.TEE_LLM.CLAUDE_HAIKU_4_5,
messages=[{"role": "user", "content": "Your message"}],
)
print(f"Response: {completion.chat_output['content']}")
Expand Down
2 changes: 1 addition & 1 deletion integrationtest/agent/test_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def setUp(self):
raise ValueError("PRIVATE_KEY environment variable is not set")

self.client = og.Client(private_key=private_key)
self.llm = OpenGradientChatModel(private_key=private_key, model_cid=LLM.CLAUDE_3_7_SONNET)
self.llm = OpenGradientChatModel(private_key=private_key, model_cid=LLM.CLAUDE_SONNET_4_6)

def test_simple_completion(self):
message = self.llm.invoke("say 'hello'. literally")
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "opengradient"
version = "0.7.4"
version = "0.7.5"
description = "Python SDK for OpenGradient decentralized model management & inference services"
authors = [{name = "OpenGradient", email = "adam@vannalabs.ai"}]
readme = "README.md"
Expand All @@ -27,7 +27,7 @@ dependencies = [
"langchain>=0.3.7",
"openai>=1.58.1",
"pydantic>=2.9.2",
"og-test-v2-x402==0.0.9"
"og-test-v2-x402==0.0.11"
]

[project.scripts]
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ requests>=2.32.3
langchain>=0.3.7
openai>=1.58.1
pydantic>=2.9.2
og-test-v2-x402==0.0.9
og-test-v2-x402==0.0.11
6 changes: 3 additions & 3 deletions src/opengradient/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@

# Chat with an LLM (TEE-verified)
response = client.llm.chat(
model=og.TEE_LLM.CLAUDE_3_5_HAIKU,
model=og.TEE_LLM.CLAUDE_HAIKU_4_5,
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=200,
)
print(response.chat_output)

# Stream a response
for chunk in client.llm.chat(
model=og.TEE_LLM.GPT_4O,
model=og.TEE_LLM.GPT_5,
messages=[{"role": "user", "content": "Explain TEE in one paragraph."}],
max_tokens=300,
stream=True,
Expand Down Expand Up @@ -141,7 +141,7 @@ def init(
import opengradient as og
client = og.init(private_key="0x...")
client.llm.ensure_opg_approval(opg_amount=5)
response = client.llm.chat(model=og.TEE_LLM.GPT_4O, messages=[...])
response = client.llm.chat(model=og.TEE_LLM.GPT_5, messages=[...])
"""
global global_client
global_client = Client(
Expand Down
Loading