qwksearch-api-client 1.0.37 → 1.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +209 -335
- package/dist/api-client.js +1 -1
- package/dist/api-client.umd.cjs +1 -1
- package/dist/index.d.ts +2926 -0
- package/package.json +14 -7
package/README.md
CHANGED
|
@@ -25,338 +25,212 @@
|
|
|
25
25
|
</p>
|
|
26
26
|
<!-- template-git-repo:badges:end -->
|
|
27
27
|
|
|
28
|
-
<p align="center">
|
|
29
|
-
<a href="https://qwksearch.com">Demo</a> •
|
|
30
|
-
<a href="https://airesearch.js.org">Documentation</a> •
|
|
31
|
-
<a href="https://github.com/vtempest/ai-research-agent">GitHub</a>
|
|
32
|
-
</p>
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
## 🧠💻 Reimagine the Internet as Self-Organizing Mind Map
|
|
36
|
-
|
|
37
|
-
<p align="center">
|
|
38
|
-
<img src="https://i.imgur.com/Z9OJMwd.gif" />
|
|
39
|
-
</p>
|
|
40
|
-
|
|
41
|
-
Critical times call for critical thinkers to create a crowdsourced argument reasoning dataset, for AI models to recommend research quotes, to evolve crowdsourced chain-of-thought reasoning, to unlock faster ways to read long articles, to monitor developments by topic modeling a knowledge base graph, and to provide a public service of answers to research.
|
|
42
|
-
|
|
43
|
-
Language Models can distill the essence of collective thought into a vector space where every point has a weighted value representing its contribution to the overall decision-making process. AI will show its reasoning based on what sentences and cites it used from the collective research, so that people can see it is aligned with our interests. Research Agents recommend articles for human researchers working alongside AI to develop a summarized topic outline as a public service. The agents monitor for any related articles via web searches for keywords associated with that Topic Model. Imagine uploading a research paper, then the app extracts full text of reference cites and creates topic model and keyword summaries, then monitors that literature base and stores highlights. People will make personal knowledge bases of what influences them to create AI assistants cloning their mind-uploaded perspective and interests in a self-organizing mind map.
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
# Download Source
|
|
47
|
-
bun x git0 vtempest/qwksearch-research-agent
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
# Import API Client
|
|
52
|
-
bun i qwksearch-api-client
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Overview
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
##
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
//
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
|
177
|
-
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
|
182
|
-
|
|
183
|
-
|
|
|
184
|
-
| `
|
|
185
|
-
|
|
|
186
|
-
|
|
|
187
|
-
|
|
|
188
|
-
| `
|
|
189
|
-
| `
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
**
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
```javascript
|
|
239
|
-
import * as qwk from 'qwksearch-api-client';
|
|
240
|
-
|
|
241
|
-
// Question answering
|
|
242
|
-
const response = await qwk.writeLanguage({
|
|
243
|
-
body: {
|
|
244
|
-
provider: 'groq',
|
|
245
|
-
key: process.env.GROQ_API_KEY,
|
|
246
|
-
agent: 'question',
|
|
247
|
-
query: 'Explain neural networks',
|
|
248
|
-
temperature: 0.7
|
|
249
|
-
}
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
const { content } = response;
|
|
253
|
-
console.log(content);
|
|
254
|
-
|
|
255
|
-
// Summarize article
|
|
256
|
-
const summary = await qwk.writeLanguage({
|
|
257
|
-
body: {
|
|
258
|
-
provider: 'anthropic',
|
|
259
|
-
key: process.env.ANTHROPIC_API_KEY,
|
|
260
|
-
agent: 'summarize-bullets',
|
|
261
|
-
article: articleText,
|
|
262
|
-
html: false // Get Markdown
|
|
263
|
-
}
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
// Answer with citations
|
|
267
|
-
const answer = await qwk.writeLanguage({
|
|
268
|
-
body: {
|
|
269
|
-
provider: 'openai',
|
|
270
|
-
key: process.env.OPENAI_API_KEY,
|
|
271
|
-
agent: 'answer-cite-sources',
|
|
272
|
-
query: 'What causes climate change?',
|
|
273
|
-
context: 'Scientific articles about greenhouse gases...',
|
|
274
|
-
temperature: 0.5
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
console.log(answer.content);
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
### 3. Search Web (`/search`)
|
|
283
|
-
|
|
284
|
-
Search the web using metasearch engine aggregating 100+ search sources.
|
|
285
|
-
|
|
286
|
-
#### Features
|
|
287
|
-
|
|
288
|
-
- **Privacy-Focused**: No tracking or personal data collection
|
|
289
|
-
- **Multiple Categories**: General, news, videos, images, science, files, IT
|
|
290
|
-
- **Recency Filters**: Filter by day, week, month, year
|
|
291
|
-
- **Multi-Language**: Support for various languages
|
|
292
|
-
- **Diverse Sources**: Aggregates from 100+ search engines
|
|
293
|
-
- Search index exceeds 100,000,000 GB covering 130 trillion pages
|
|
294
|
-
- Uses 200+ ranking factors including keywords, backlinks, page speed
|
|
295
|
-
|
|
296
|
-
#### Request
|
|
297
|
-
|
|
298
|
-
```http
|
|
299
|
-
GET /search?q={query}&cat={category}&recency={filter}&lang={language}
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
**Parameters:**
|
|
303
|
-
|
|
304
|
-
| Parameter | Type | Required | Default | Description |
|
|
305
|
-
|-----------|------|----------|---------|-------------|
|
|
306
|
-
| `q` | string | Yes | - | Search query string |
|
|
307
|
-
| `cat` | string | No | general | Category: general, news, videos, images, science, files, it |
|
|
308
|
-
| `recency` | string | No | all | Time filter: all, day, week, month, year |
|
|
309
|
-
| `safesearch` | boolean | No | false | Block adult content |
|
|
310
|
-
| `public` | boolean | No | false | Use public server instances |
|
|
311
|
-
| `page` | integer | No | 1 | Pagination for results |
|
|
312
|
-
| `lang` | string | No | en-US | Language code |
|
|
313
|
-
|
|
314
|
-
#### Response
|
|
315
|
-
|
|
316
|
-
**200 OK**
|
|
317
|
-
|
|
318
|
-
```json
|
|
319
|
-
{
|
|
320
|
-
"results": [
|
|
321
|
-
{
|
|
322
|
-
"title": "Search result title",
|
|
323
|
-
"url": "https://example.com/page",
|
|
324
|
-
"snippet": "Text snippet around the query...",
|
|
325
|
-
"domain": "example.com",
|
|
326
|
-
"favicon": "https://example.com/favicon.ico",
|
|
327
|
-
"path": "/page",
|
|
328
|
-
"engines": "google,bing"
|
|
329
|
-
}
|
|
330
|
-
]
|
|
331
|
-
}
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
## Installation
|
|
335
|
-
|
|
336
|
-
### NPM Package
|
|
337
|
-
|
|
338
|
-
```bash
|
|
339
|
-
npm install qwksearch-api-client
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
---
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
## Links
|
|
347
|
-
|
|
348
|
-
- **Documentation**: [airesearch.js.org](https://airesearch.js.org/)
|
|
349
|
-
- **Demo**: [qwksearch.com](https://qwksearch.com/)
|
|
350
|
-
- **GitHub**: [github.com/vtempest/ai-research-agent](https://github.com/vtempest/ai-research-agent)
|
|
351
|
-
- **OpenAPI Spec**: [View Full Specification](./qwksearch-openapi.yml)
|
|
352
|
-
|
|
353
|
-
- [LLM Training Example](https://github.com/vtempest/ai-research-agent/blob/master/packages/neural-net/src/train/predict-next-word.js)
|
|
354
|
-
- [LangChain ReactAgent Tools](https://medium.com/@terrycho/how-langchain-agent-works-internally-trace-by-using-langsmith-df23766e7fb4)
|
|
355
|
-
- [Hugging Face Tutorials](https://huggingface.co/learn)
|
|
356
|
-
- [OpenAI Cookbook](https://cookbook.openai.com)
|
|
357
|
-
- [Transformer Overview](https://jalammar.github.io/illustrated-transformer/)
|
|
358
|
-
- [Building Transformer Guide](https://www.datacamp.com/tutorial/building-a-transformer-with-py-torch)
|
|
359
|
-
- [PyTorch Overview](https://www.learnpytorch.io/pytorch_cheatsheet/)
|
|
360
|
-
- [SearXNG Overview](https://medium.com/@elmo92/search-in-peace-with--an-alternative-search-engine-that-keeps-your-searches-private-accd8cddd6fc)
|
|
361
|
-
- [Evaluating Large Language Models in Scientific Discovery](https://arxiv.org/pdf/2512.15567)
|
|
362
|
-
---
|
|
28
|
+
<p align="center">
|
|
29
|
+
<a href="https://qwksearch.com">Demo</a> •
|
|
30
|
+
<a href="https://airesearch.js.org">Documentation</a> •
|
|
31
|
+
<a href="https://github.com/vtempest/ai-research-agent">GitHub</a>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
## 🧠💻 Reimagine the Internet as Self-Organizing Mind Map
|
|
36
|
+
|
|
37
|
+
<p align="center">
|
|
38
|
+
<img src="https://i.imgur.com/Z9OJMwd.gif" />
|
|
39
|
+
</p>
|
|
40
|
+
|
|
41
|
+
Critical times call for critical thinkers to create a crowdsourced argument reasoning dataset, for AI models to recommend research quotes, to evolve crowdsourced chain-of-thought reasoning, to unlock faster ways to read long articles, to monitor developments by topic modeling a knowledge base graph, and to provide a public service of answers to research.
|
|
42
|
+
|
|
43
|
+
Language Models can distill the essence of collective thought into a vector space where every point has a weighted value representing its contribution to the overall decision-making process. AI will show its reasoning based on what sentences and cites it used from the collective research, so that people can see it is aligned with our interests. Research Agents recommend articles for human researchers working alongside AI to develop a summarized topic outline as a public service. The agents monitor for any related articles via web searches for keywords associated with that Topic Model. Imagine uploading a research paper, then the app extracts full text of reference cites and creates topic model and keyword summaries, then monitors that literature base and stores highlights. People will make personal knowledge bases of what influences them to create AI assistants cloning their mind-uploaded perspective and interests in a self-organizing mind map.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Download Source
|
|
47
|
+
bun x git0 vtempest/qwksearch-research-agent
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Import API Client
|
|
52
|
+
bun i qwksearch-api-client
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Overview
|
|
56
|
+
|
|
57
|
+
The typed client for the QwkSearch API — 85 functions generated from
|
|
58
|
+
[`qwksearch-openapi.json`](./qwksearch-openapi.json) with
|
|
59
|
+
[Hey API](https://heyapi.dev), covering research chat and search, article Q&A,
|
|
60
|
+
URL/PDF/YouTube scraping, the REASON document store, voice, provider and model
|
|
61
|
+
config, MCP servers, NotebookLM and accounts.
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
## Transport: every call goes through `grab`
|
|
66
|
+
|
|
67
|
+
The generated SDK is wired to [**api2client**](https://github.com/OpenSourceAGI/GRAB-URL/tree/master/packages/api2client),
|
|
68
|
+
a [Hey API](https://heyapi.dev) client backed by [`grab`](https://grab.js.org),
|
|
69
|
+
rather than to `fetch`. The functions, their options and the
|
|
70
|
+
`{ data, error, request, response }` result are unchanged — only the transport
|
|
71
|
+
underneath is different — so every endpoint in this client picks up grab's
|
|
72
|
+
caching, retries, rate limiting, request dedupe, mock server and shared
|
|
73
|
+
request log.
|
|
74
|
+
|
|
75
|
+
Those are per-request options, alongside the usual `body`/`path`/`query`:
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
const { data, error } = await agentSearch({
|
|
79
|
+
query: { q: 'quantum computing' },
|
|
80
|
+
cache: true, // serve repeats from grab's cache
|
|
81
|
+
cacheForTime: 60, // …for 60 seconds
|
|
82
|
+
retryAttempts: 2,
|
|
83
|
+
timeout: 15,
|
|
84
|
+
rateLimit: 1, // min seconds between calls to this path
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Or client-wide, for every call on that client:
|
|
89
|
+
|
|
90
|
+
```javascript
|
|
91
|
+
import { createClient, createConfig } from 'qwksearch-api-client/client';
|
|
92
|
+
|
|
93
|
+
const client = createClient(createConfig({ cache: true, retryAttempts: 2 }));
|
|
94
|
+
await agentSearch({ query: { q: 'quantum computing' }, client });
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Because grab keys its cache, dedupe and mocks by **path**, an endpoint can be
|
|
98
|
+
stubbed without touching the network:
|
|
99
|
+
|
|
100
|
+
```javascript
|
|
101
|
+
import { grab } from 'grab-url';
|
|
102
|
+
|
|
103
|
+
grab.mock['/agent/search'] = { response: { results: [] } };
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
> Recovering the HTTP status and the parsed error body from behind grab needs
|
|
107
|
+
> its `onRawResponse` hook, added in **grab-url 1.6.23**. On an older grab,
|
|
108
|
+
> api2client cannot hand back a `Response`, so `result.response` is
|
|
109
|
+
> `undefined` and `result.error` is grab's own `"HTTP error: <status>"` string
|
|
110
|
+
> instead of the handler's JSON body.
|
|
111
|
+
|
|
112
|
+
## Complete Example: Research Pipeline
|
|
113
|
+
|
|
114
|
+
Search the web, read the top results, then ask a question grounded in them:
|
|
115
|
+
|
|
116
|
+
```javascript
|
|
117
|
+
import { agentSearch, scrapeGet, articleQa } from 'qwksearch-api-client';
|
|
118
|
+
|
|
119
|
+
async function researchTopic(topic) {
|
|
120
|
+
// 1. Search for relevant articles
|
|
121
|
+
const { data: search } = await agentSearch({
|
|
122
|
+
query: { q: topic, cat: 'science', recency: 'month' },
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
console.log(`Found ${search.results.length} results`);
|
|
126
|
+
|
|
127
|
+
// 2. Read the top 3 results
|
|
128
|
+
const articles = await Promise.all(
|
|
129
|
+
search.results.slice(0, 3).map(async ({ url }) => {
|
|
130
|
+
const { data } = await scrapeGet({ query: { url, format: 'json' } });
|
|
131
|
+
return data;
|
|
132
|
+
}),
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
// 3. Ask a question grounded in all of them
|
|
136
|
+
const combinedText = articles
|
|
137
|
+
.map((a) => `${a.title}\n\n${a.html}`)
|
|
138
|
+
.join('\n\n---\n\n');
|
|
139
|
+
|
|
140
|
+
const { data: answer } = await articleQa({
|
|
141
|
+
body: {
|
|
142
|
+
article: combinedText,
|
|
143
|
+
question: `Summarise the state of ${topic} in bullet points.`,
|
|
144
|
+
chatModel: { providerId: 'groq', key: 'llama-3.3-70b-versatile' },
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
return { searchResults: search.results, articles, summary: answer.content };
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
researchTopic('quantum computing applications').then((results) => {
|
|
152
|
+
console.log('Research Summary:');
|
|
153
|
+
console.log(results.summary);
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Every function returns `{ data, error, request, response }` and **does not
|
|
158
|
+
throw** by default — read `error`, or pass `throwOnError: true`.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
## API Endpoints
|
|
164
|
+
|
|
165
|
+
The full, current surface is the generated SDK itself — 85 typed functions, one
|
|
166
|
+
per operation in [`qwksearch-openapi.json`](./qwksearch-openapi.json), which
|
|
167
|
+
this package also exports:
|
|
168
|
+
|
|
169
|
+
```javascript
|
|
170
|
+
import spec from 'qwksearch-api-client/openapi.json';
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Browse it rendered at [qwksearch.com/api/docs](https://qwksearch.com/api/docs),
|
|
174
|
+
or by area:
|
|
175
|
+
|
|
176
|
+
| Area | Functions |
|
|
177
|
+
| --- | --- |
|
|
178
|
+
| Agent | `agentChat`, `agentSearch`, `articleQa`, `articleFollowups`, `generateSuggestions`, `discoverContent`, `rewriteText`, `autocomplete` |
|
|
179
|
+
| Chats | `listChats`, `getChatById`, `searchChats`, `saveMessage`, `shareChat`, `deleteChatById`, `deleteAllChats` |
|
|
180
|
+
| Documents | `listDocuments`, `createDocument`, `getDocumentById`, `updateDocument`, `deleteDocument`, `shareDocument`, `getSharedDocument` |
|
|
181
|
+
| Articles & quotes | `getArticle`, `updateArticle`, `listQuotes`, `createQuote`, `updateQuote`, `deleteQuote`, `listFavorites`, `addFavorite`, `removeFavorite` |
|
|
182
|
+
| Files | `uploadFiles`, `getUploadedFile`, `deleteUploadedFile`, `getUserStorage` |
|
|
183
|
+
| Voice | `transcribeAudio`, `textToSpeech` |
|
|
184
|
+
| Config & models | `getConfig`, `saveConfig`, `listProviders`, `addProvider`, `updateProvider`, `deleteProvider`, `addProviderModel`, `deleteProviderModel`, `testModels` |
|
|
185
|
+
| MCP | `listMcpServers`, `addMcpServer`, `updateMcpServer`, `toggleMcpServer`, `deleteMcpServer` |
|
|
186
|
+
| Search & scraping | `agentSearch`, `listSearchEngines`, `getEngineStatus`, `updateEngineStatus`, `testSearchEngines`, `scrapeGet`, `scrapePost` |
|
|
187
|
+
| Google Docs / Drive | `googleDocsAuth`, `googleDocsAuthStatus`, `googleDocsCallback`, `exportToGoogleDocs`, `importFromGoogleDocs`, `getGoogleDriveFile`, `shareGoogleDoc`, `getGoogleToken`, `refreshGoogleToken` |
|
|
188
|
+
| NotebookLM | `notebooklmLogin`, `getNotebooklmStatus`, `disconnectNotebooklm`, `listNotebooks`, `createNotebook`, `deleteNotebook`, `askNotebook`, `listNotebookSources`, `addNotebookSource`, `generateNotebookAudio` |
|
|
189
|
+
| Accounts | `getUser`, `updateUser`, `deleteUser`, `deleteUserAccount`, `changePassword`, `listSessions`, `revokeSession`, `revokeOtherSessions`, `listUserAccounts` |
|
|
190
|
+
|
|
191
|
+
### Removed in 1.0: `extractContent`, `writeLanguage`, `searchWeb`
|
|
192
|
+
|
|
193
|
+
The 0.x client wrapped three endpoints — `/extract`, `/agents` and `/search`.
|
|
194
|
+
All three are gone from the API, and so are those three functions. `/agents`
|
|
195
|
+
in particular now answers **501** and says so. Replace them with:
|
|
196
|
+
|
|
197
|
+
| 0.x | Use instead |
|
|
198
|
+
| --- | --- |
|
|
199
|
+
| `searchWeb({ query: { q } })` | `agentSearch({ query: { q } })` |
|
|
200
|
+
| `extractContent({ query: { url } })` | `scrapeGet({ query: { url } })` |
|
|
201
|
+
| `writeLanguage({ body: { agent: 'question', article } })` | `articleQa({ body: { article, question } })` |
|
|
202
|
+
| `writeLanguage({ body: { agent: 'summarize-bullets', article } })` | `articleQa({ body: { article, question: 'Summarise this in bullet points.' } })` |
|
|
203
|
+
| anything conversational | `agentChat` (server-sent events) |
|
|
204
|
+
|
|
205
|
+
Importing a removed function is not a runtime error — it is `undefined` until
|
|
206
|
+
you call it, and bundlers only warn. Check against the table above.
|
|
207
|
+
|
|
208
|
+
## Installation
|
|
209
|
+
|
|
210
|
+
### NPM Package
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
npm install qwksearch-api-client
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
## Links
|
|
221
|
+
|
|
222
|
+
- **Documentation**: [airesearch.js.org](https://airesearch.js.org/)
|
|
223
|
+
- **Demo**: [qwksearch.com](https://qwksearch.com/)
|
|
224
|
+
- **GitHub**: [github.com/vtempest/ai-research-agent](https://github.com/vtempest/ai-research-agent)
|
|
225
|
+
- **OpenAPI Spec**: [View Full Specification](./qwksearch-openapi.yml)
|
|
226
|
+
|
|
227
|
+
- [LLM Training Example](https://github.com/vtempest/ai-research-agent/blob/master/packages/neural-net/src/train/predict-next-word.js)
|
|
228
|
+
- [LangChain ReactAgent Tools](https://medium.com/@terrycho/how-langchain-agent-works-internally-trace-by-using-langsmith-df23766e7fb4)
|
|
229
|
+
- [Hugging Face Tutorials](https://huggingface.co/learn)
|
|
230
|
+
- [OpenAI Cookbook](https://cookbook.openai.com)
|
|
231
|
+
- [Transformer Overview](https://jalammar.github.io/illustrated-transformer/)
|
|
232
|
+
- [Building Transformer Guide](https://www.datacamp.com/tutorial/building-a-transformer-with-py-torch)
|
|
233
|
+
- [PyTorch Overview](https://www.learnpytorch.io/pytorch_cheatsheet/)
|
|
234
|
+
- [SearXNG Overview](https://medium.com/@elmo92/search-in-peace-with--an-alternative-search-engine-that-keeps-your-searches-private-accd8cddd6fc)
|
|
235
|
+
- [Evaluating Large Language Models in Scientific Discovery](https://arxiv.org/pdf/2512.15567)
|
|
236
|
+
---
|