Added parallel-web skill

Refactor research lookup skill to enhance backend routing and update documentation. The skill now intelligently selects between the Parallel Chat API and Perplexity sonar-pro-search based on query type. Added compatibility notes, license information, and improved descriptions for clarity. Removed outdated example scripts to streamline the codebase.
This commit is contained in:
Vinayak Agarwal
2026-03-01 07:36:19 -08:00
parent 29c869326e
commit f72b7f4521
13 changed files with 3969 additions and 769 deletions

View File

@@ -0,0 +1,244 @@
# Parallel Web Systems API Quick Reference
**Full Documentation:** https://docs.parallel.ai
**API Key:** https://platform.parallel.ai
**Python SDK:** `pip install parallel-web`
**Environment Variable:** `PARALLEL_API_KEY`
---
## Search API (Beta)
**Endpoint:** `POST https://api.parallel.ai/v1beta/search`
**Header:** `parallel-beta: search-extract-2025-10-10`
### Request
```json
{
"objective": "Natural language search goal (max 5000 chars)",
"search_queries": ["keyword query 1", "keyword query 2"],
"max_results": 10,
"excerpts": {
"max_chars_per_result": 10000,
"max_chars_total": 50000
},
"source_policy": {
"allow_domains": ["example.com"],
"deny_domains": ["spam.com"],
"after_date": "2024-01-01"
}
}
```
### Response
```json
{
"search_id": "search_...",
"results": [
{
"url": "https://...",
"title": "Page Title",
"publish_date": "2025-01-15",
"excerpts": ["Relevant content..."]
}
]
}
```
### Python SDK
```python
from parallel import Parallel
client = Parallel(api_key="...")
result = client.beta.search(
objective="...",
search_queries=["..."],
max_results=10,
excerpts={"max_chars_per_result": 10000},
)
```
**Cost:** $5 per 1,000 requests (default 10 results each)
**Rate Limit:** 600 requests/minute
---
## Extract API (Beta)
**Endpoint:** `POST https://api.parallel.ai/v1beta/extract`
**Header:** `parallel-beta: search-extract-2025-10-10`
### Request
```json
{
"urls": ["https://example.com/page"],
"objective": "What to focus on",
"excerpts": true,
"full_content": false
}
```
### Response
```json
{
"extract_id": "extract_...",
"results": [
{
"url": "https://...",
"title": "Page Title",
"excerpts": ["Focused content..."],
"full_content": null
}
],
"errors": []
}
```
### Python SDK
```python
result = client.beta.extract(
urls=["https://..."],
objective="...",
excerpts=True,
full_content=False,
)
```
**Cost:** $1 per 1,000 URLs
**Rate Limit:** 600 requests/minute
---
## Task API (Deep Research)
**Endpoint:** `POST https://api.parallel.ai/v1/tasks/runs`
### Create Task Run
```json
{
"input": "Research question (max 15,000 chars)",
"processor": "pro-fast",
"task_spec": {
"output_schema": {
"type": "text"
}
}
}
```
### Response (immediate)
```json
{
"run_id": "trun_...",
"status": "queued"
}
```
### Get Result (blocking)
**Endpoint:** `GET https://api.parallel.ai/v1/tasks/runs/{run_id}/result`
### Python SDK
```python
# Text output (markdown report with citations)
from parallel.types import TaskSpecParam
task_run = client.task_run.create(
input="Research question",
processor="pro-fast",
task_spec=TaskSpecParam(output_schema={"type": "text"}),
)
result = client.task_run.result(task_run.run_id, api_timeout=3600)
print(result.output.content)
# Auto-schema output (structured JSON)
task_run = client.task_run.create(
input="Research question",
processor="pro-fast",
)
result = client.task_run.result(task_run.run_id, api_timeout=3600)
print(result.output.content) # structured dict
print(result.output.basis) # citations per field
```
### Processors
| Processor | Latency | Cost/1000 | Best For |
|-----------|---------|-----------|----------|
| `lite-fast` | 10-20s | $5 | Basic metadata |
| `base-fast` | 15-50s | $10 | Standard enrichments |
| `core-fast` | 15s-100s | $25 | Cross-referenced |
| `core2x-fast` | 15s-3min | $50 | High complexity |
| **`pro-fast`** | **30s-5min** | **$100** | **Default: exploratory research** |
| `ultra-fast` | 1-10min | $300 | Deep multi-source |
| `ultra2x-fast` | 1-20min | $600 | Difficult research |
| `ultra4x-fast` | 1-40min | $1200 | Very difficult |
| `ultra8x-fast` | 1hr | $2400 | Most difficult |
Standard (non-fast) processors have the same cost but higher latency and freshest data.
---
## Chat API (Beta)
**Endpoint:** `POST https://api.parallel.ai/chat/completions`
**Compatible with OpenAI SDK.**
### Models
| Model | Latency (TTFT) | Cost/1000 | Use Case |
|-------|----------------|-----------|----------|
| `speed` | ~3s | $5 | Low-latency chat |
| `lite` | 10-60s | $5 | Simple lookups with basis |
| `base` | 15-100s | $10 | Standard research with basis |
| `core` | 1-5min | $25 | Complex research with basis |
### Python SDK (OpenAI-compatible)
```python
from openai import OpenAI
client = OpenAI(
api_key="PARALLEL_API_KEY",
base_url="https://api.parallel.ai",
)
response = client.chat.completions.create(
model="speed",
messages=[{"role": "user", "content": "What is Parallel Web Systems?"}],
)
```
---
## Rate Limits
| API | Default Limit |
|-----|---------------|
| Search | 600 req/min |
| Extract | 600 req/min |
| Chat | 300 req/min |
| Task | Varies by processor |
---
## Source Policy
Control which sources are used in searches:
```json
{
"source_policy": {
"allow_domains": ["nature.com", "science.org"],
"deny_domains": ["unreliable-source.com"],
"after_date": "2024-01-01"
}
}
```
Works with Search API and can be used to focus results on specific authoritative domains.