You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(parallel): migrate search and extract to V1 and fix deep research schema (#7612)
* fix(parallel): migrate search and extract to V1 and fix deep research schema
- Search and Extract targeted the retired /v1beta endpoints; both now use /v1 with the
advanced_settings request shape, V1 modes (turbo, fast, basic, advanced), and mode-aware
hosted-key pricing. Retired one-shot/agentic modes are remapped and an objective-only
workflow falls back to the objective as its query so saved blocks keep working
- Extract drops the removed excerpts toggle (V1 always returns excerpts), nests full_content
under advanced_settings, surfaces the per-URL errors array, and fails cleanly when every URL
errored
- Deep research sent output_schema as a bare string, which Parallel treats as a text schema,
and read status from the wrong path so it always reported completed. It now offers an
Output Format choice (markdown report by default, structured JSON on Pro+), sends the
object-form schema, reads run.status, and passes a timeout to the blocking result endpoint
- Processor dropdown lists the documented tiers; subblock migration for the removed toggle;
regenerated tool metadata and docs; unit tests for request shapes, pricing, and block mapping
* fix(parallel): move the Pi web_search Parallel request to V1 and drop any in tests
- The Pi web_search host and sandbox request builders still targeted /v1beta/search with the
beta header and an objective-only body, which the V1 tool now rejects because search_queries
is required. Both send the query as the single search query plus objective, with max_results
under advanced_settings, so the parity test holds again
- Test helpers return Record<string, unknown> instead of any
|`output_format`| string | No | Output format: text for a markdown report with inline citations, auto for a structured JSON object that needs the pro tier or higher \(default: text\)|
106
+
|`processor`| string | No | Processing tier: core, core2x, pro, ultra, ultra2x, ultra4x, ultra8x, or a -fast variant \(default: pro\)|
102
107
|`include_domains`| string | No | Comma-separated list of domains to restrict research to \(source policy\)|
103
108
|`exclude_domains`| string | No | Comma-separated list of domains to exclude from research \(source policy\)|
104
109
|`apiKey`| string | Yes | Parallel AI API Key |
@@ -110,14 +115,14 @@ Conduct comprehensive deep research across the web using Parallel AI. Synthesize
110
115
|`status`| string | Task status \(completed, failed, running\)|
111
116
|`run_id`| string | Unique ID for this research task |
112
117
|`message`| string | Status message |
113
-
|`content`|object| Research results \(structured based on output_schema\)|
118
+
|`content`|json| Research findings: a markdown report string for the text output format, or a structured object with query-specific keys for the auto format|
114
119
|`basis`| array | Citations and sources with reasoning and confidence levels |
115
120
| ↳ `field`| string | Output field dot-notation path |
116
121
| ↳ `reasoning`| string | Explanation for the result |
117
122
| ↳ `citations`| array | Array of sources |
118
123
| ↳ `url`| string | Source URL |
119
124
| ↳ `title`| string | Source title |
120
125
| ↳ `excerpts`| array | Relevant excerpts from the source |
placeholder: "When was the United Nations established? Prefer UN's websites.",
52
+
placeholder:
53
+
'Enter concise keyword queries separated by commas (e.g., "Founding year UN", "United Nations established")',
53
54
required: true,
54
55
condition: {field: 'operation',value: 'search'},
56
+
wandConfig: {
57
+
enabled: true,
58
+
prompt:
59
+
'Generate 1-5 concise keyword web search queries (3-6 words each) for the described research goal. Return ONLY the queries as a comma-separated list.',
60
+
placeholder: 'Describe what you want to find...',
61
+
},
55
62
},
56
63
{
57
-
id: 'search_queries',
58
-
title: 'Search Queries',
64
+
id: 'objective',
65
+
title: 'Search Objective',
59
66
type: 'long-input',
60
-
placeholder:
61
-
'Enter search queries separated by commas (e.g., "Founding year UN", "Year of founding United Nations")',
67
+
placeholder: "When was the United Nations established? Prefer UN's websites.",
search_id: {type: 'string',description: 'Search request ID (for search)'},
281
286
extract_id: {type: 'string',description: 'Extract request ID (for extract)'},
287
+
errors: {
288
+
type: 'json',
289
+
description:
290
+
'URLs that could not be extracted (array of url, error_type, http_status_code, content) (for extract)',
291
+
},
282
292
status: {type: 'string',description: 'Task status (for deep research)'},
283
293
run_id: {type: 'string',description: 'Task run ID (for deep research)'},
284
294
message: {type: 'string',description: 'Status message (for deep research)'},
285
295
content: {
286
296
type: 'json',
287
-
description: 'Research content (for deep research, structured based on output_schema)',
297
+
description:
298
+
'Research findings: a markdown report string when Output Format is Markdown report, or a structured object with query-specific keys when it is Structured JSON (for deep research)',
'Run Parallel AI deep research on a company and produce a cited brief covering funding, leadership, and product.',
374
385
content:
375
-
'# Research Company Brief\n\nGenerate a sourced account brief for a target company.\n\n## Steps\n1. Use the Deep Research operation with a Research Query naming the company and the angles to cover: recent funding, leadership changes, product launches, and notable news.\n2. Choose a processor tier (Pro for balance, Ultra for depth) and optionally constrain Include or Exclude Domains.\n3. Read the structured content plus the basis field for citations and confidence per claim.\n\n## Output\nA brief organized by topic, where every claim links to its source URL from the basis, and note any low-confidence items that need verification.',
386
+
'# Research Company Brief\n\nGenerate a sourced account brief for a target company.\n\n## Steps\n1. Use the Deep Research operation with a Research Query naming the company and the angles to cover: recent funding, leadership changes, product launches, and notable news.\n2. Choose an Output Format (Markdown report for prose, Structured JSON for fielded data), a processor tier (Pro for balance, Ultra for depth), and optionally constrain Include or Exclude Domains.\n3. Read the content plus the basis field for citations and confidence per claim.\n\n## Output\nA brief organized by topic, where every claim links to its source URL from the basis, and note any low-confidence items that need verification.',
376
387
},
377
388
{
378
389
name: 'web-search-with-objective',
379
390
description:
380
391
'Use Parallel AI search to answer a question across the web and return ranked, cited results.',
381
392
content:
382
-
'# Web Search With Objective\n\nAnswer a factual question grounded in fresh web sources.\n\n## Steps\n1. Use the Search operation and state a clear Objective describing what you want to know and which sources to prefer.\n2. Optionally add specific Search Queries, set a Search Mode (one-shot, agentic, or fast), and limit results with Include or Exclude Domains.\n3. Tune Max Results and Max Chars Per Result for breadth versus depth.\n\n## Output\nA direct answer to the objective followed by the supporting results, each with title, URL, and the relevant excerpt.',
393
+
'# Web Search With Objective\n\nAnswer a factual question grounded in fresh web sources.\n\n## Steps\n1. Use the Search operation with one or more concise keyword Search Queries, and optionally an Objective describing what you want to know and which sources to prefer.\n2. Optionally set a Search Mode (turbo, fast, basic, or advanced) and limit results with Include or Exclude Domains.\n3. Tune Max Results and Max Chars Per Result for breadth versus depth.\n\n## Output\nA direct answer to the objective followed by the supporting results, each with title, URL, and the relevant excerpt.',
383
394
},
384
395
{
385
396
name: 'extract-facts-from-urls',
386
397
description: 'Use Parallel AI extract to pull structured facts from a list of source URLs.',
387
398
content:
388
-
'# Extract Facts From URLs\n\nTurn a set of pages into structured data.\n\n## Steps\n1. Use the Extract operation and provide the comma-separated URLs to read.\n2. Set an Extract Objective describing exactly which fields to pull from each page.\n3. Enable Include Excerpts for supporting snippets and Include Full Content only when the whole page text is needed.\n\n## Output\nA normalized record per URL with the requested fields and an excerpt backing each value, plus a note on any URL that could not be parsed.',
399
+
'# Extract Facts From URLs\n\nTurn a set of pages into structured data.\n\n## Steps\n1. Use the Extract operation and provide the comma-separated URLs to read.\n2. Set an Extract Objective describing exactly which fields to pull from each page.\n3. Excerpts are always returned; enable Include Full Content only when the whole page text is needed.\n\n## Output\nA normalized record per URL with the requested fields and an excerpt backing each value, plus a note on any URL that could not be parsed.',
389
400
},
390
401
{
391
402
name: 'monitor-competitor-news',
392
403
description:
393
404
'Search Parallel AI for recent announcements from named competitors and summarize the changes.',
394
405
content:
395
-
'# Monitor Competitor News\n\nTrack what rivals shipped or announced recently.\n\n## Steps\n1. Use the Search operation with an Objective naming the competitors and the timeframe of interest.\n2. Optionally restrict Include Domains to the competitors official sites and reputable news outlets.\n3. For high-signal hits, follow up with the Extract operation to pull the specific details from each announcement URL.\n\n## Output\nA dated digest grouped by competitor, each item a one-line summary with its source URL and why it matters.',
406
+
'# Monitor Competitor News\n\nTrack what rivals shipped or announced recently.\n\n## Steps\n1. Use the Search operation with keyword Search Queries naming each competitor, plus an Objective describing the timeframe of interest.\n2. Optionally restrict Include Domains to the competitors official sites and reputable news outlets.\n3. For high-signal hits, follow up with the Extract operation to pull the specific details from each announcement URL.\n\n## Output\nA dated digest grouped by competitor, each item a one-line summary with its source URL and why it matters.',
0 commit comments