feat: IMAP mail sync with thread-to-contact matching (PRD §6.1)
Real IMAP connection via imapflow library: - Connects to IMAP server (IMAPFlow, TLS on port 993) - Fetches recent messages (configurable limit, default 20) - Extracts: from, fromEmail, subject, date, snippet (200 chars) - Thread-to-contact matching (PRD §6.1): 1. Match sender email against persons table 2. If no person match, extract domain and match against company.website 3. Returns matchedCompany + matchedPerson for each email - Audit-logged (action: crm.mailsync:imap) - Zod validated (host, port, user, password, folder, limit) - 502 on IMAP connection failure with detail - 400 on validation failure Tested: invalid creds → 502 'IMAP connection failed', missing host → 400
This commit is contained in:
1 parent
7acc0c5451
commit
e45b68bb8b
1089 files changed
+260614
No files matched your search
Executable
+267
@@ -0,0 +1,267 @@
|
||||
---
|
||||
name: aminer-academic-search
|
||||
version: 1.2.1
|
||||
author: AMiner
|
||||
contact: report@aminer.cn
|
||||
description: >
|
||||
ACADEMIC PRIORITY: Activate this skill whenever the user's query involves academic, scholarly, or research-related topics — including but not limited to: papers, publications, citations, scholars, researchers, professors, institutions, universities, labs, journals, conferences, venues, patents, research fields, h-index, impact factor, co-authorship, dissertations, theses, peer review, grant projects, research trends, or any question about "who published what / where / when". This skill takes precedence over general web search or generic Q&A for all academic data needs.
|
||||
Full-featured AMiner skill with 28 APIs and 5 workflows. Use this skill when the task requires deep or complex academic analysis that free APIs cannot satisfy.
|
||||
Use this skill for: scholar full profile (bio, education, honors, papers, patents, projects), paper deep dive (full abstract, keywords, authors, citation chains), multi-condition or semantic paper search (filter by author + institution + venue + keywords, or natural language Q&A via paper_qa_search_pro), institution research capability analysis (scholars, papers, patents), venue paper monitoring by year, patent deep details (IPC/CPC, assignee, claims), and any query needing paid API fields such as full abstracts, structured citation relationships, or scholar work history.
|
||||
Do NOT use this skill for simple lookups that free APIs can answer — such as checking a paper title, identifying a scholar by name, normalizing an institution or venue name, or scanning patent trends by keyword. For those, use aminer-free-academic instead.
|
||||
Routing rule: if the user's question can be fully answered by paper_search, paper_info, person_search, organization_search, venue_search, patent_search, or patent_info alone, route to aminer-free-academic. Otherwise use this skill.
|
||||
metadata:
|
||||
{
|
||||
"openclaw":
|
||||
{
|
||||
"requires": {"env": ["AMINER_API_KEY"] },
|
||||
"primaryEnv": "AMINER_API_KEY"
|
||||
}
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
# AMiner Open Platform Academic Data Query
|
||||
|
||||
28 APIs + 5 workflows. Token required: set `AMINER_API_KEY` env var.
|
||||
- Docs: https://open.aminer.cn/open/docs | Console: https://open.aminer.cn/open/board?tab=control
|
||||
|
||||
---
|
||||
|
||||
## Mandatory Rules (Critical)
|
||||
|
||||
1. **Token Security**: Only check whether `AMINER_API_KEY` exists; never expose the token in plain text anywhere.
|
||||
2. **Cost Control**: Prefer optimal combined queries; never do indiscriminate full-detail retrieval. Default to top 10 details when the user has not specified a count.
|
||||
3. **Free-First**: Prefer free APIs unless the user explicitly requires deeper fields; only upgrade to paid APIs when free ones cannot satisfy the need.
|
||||
4. **Result Links**: Always append an accessible URL after each entity in the output.
|
||||
5. **Disambiguation**: Scholar ambiguity → filter by `org`/`org_id` or ask user to confirm. Org ambiguity → use `org_disambiguate_pro`. Paper ambiguity → cross-check `year` + `venue_name` + `first_author`.
|
||||
6. **Cost Report**: After completing all API calls, always output a cost summary to the user showing: each API called, its unit price, number of calls, and the total cost. Format example: `[Cost] ¥X.XX total, N API calls (api_a: ¥X.XX × N, api_b: Free × N)`.
|
||||
7. **High-Cost Confirmation (≥ ¥5)**: Before executing a workflow or call chain whose estimated total cost is ¥5.00 or more, **stop and ask the user for confirmation** first. Show the planned call chain, estimated cost per step, and the total. Only proceed after the user explicitly agrees. This applies to both predefined workflows (e.g., Scholar Profile ~¥6.00) and ad-hoc multi-step plans.
|
||||
|
||||
Entity URL templates (mandatory):
|
||||
- Paper: `https://www.aminer.cn/pub/{paper_id}`
|
||||
- Scholar: `https://www.aminer.cn/profile/{scholar_id}`
|
||||
- Patent: `https://www.aminer.cn/patent/{patent_id}`
|
||||
- Journal: `https://www.aminer.cn/open/journal/detail/{journal_id}`
|
||||
|
||||
---
|
||||
|
||||
## Token Check (Required)
|
||||
|
||||
Check `AMINER_API_KEY` exists before any API call. Never expose token in plain text.
|
||||
|
||||
```bash
|
||||
[ -z "${AMINER_API_KEY+x}" ] && echo "AMINER_API_KEY missing" || echo "AMINER_API_KEY exists"
|
||||
```
|
||||
|
||||
- If `${AMINER_API_KEY}` exists: proceed. If not: check `--token` parameter. If neither: **stop**, guide user to [Console](https://open.aminer.cn/open/board?tab=control) to generate one.
|
||||
- If the user provides `AMINER_API_KEY` inline (e.g. "My token is xxx"), accept it for the current session, but recommend setting it as an environment variable for better security.
|
||||
- Default headers: `Authorization: ${AMINER_API_KEY}`, `X-Platform: openclaw`, `Content-Type: application/json;charset=utf-8` (POST).
|
||||
|
||||
---
|
||||
|
||||
## Call Guardrails
|
||||
|
||||
1. Parameter names and types must match `references/api-catalog.md` exactly.
|
||||
2. `paper_info` is batch-only: `{"ids": [...]}`. `paper_detail` is single-paper only: one `id`. Never mix them.
|
||||
3. When multiple details are needed, filter with a low-cost API first, then fetch details for a small set.
|
||||
4. **Prefer `paper_qa_search_pro`; avoid legacy `paper_qa_search`.** For almost all paper Q&A / topic / filter searches, call `paper_qa_search_pro` first. Use legacy `paper_qa_search` **only** when the user explicitly needs `topic_high` / `topic_middle` / `topic_low` structured OR/AND mode that Pro does not support. Do not default to the legacy endpoint out of habit.
|
||||
|
||||
---
|
||||
|
||||
## Paper Search API Selection Guide
|
||||
|
||||
When the user says "search for papers", determine the goal first:
|
||||
|
||||
| API | Focus | Use Case | Cost |
|
||||
|---|---|---|---|
|
||||
| `paper_search` | Title search → `paper_id` | Known paper title, locate target | Free |
|
||||
| `paper_search_pro` | Multi-condition search (author/org/venue/keyword) | Topic search, sort by citations or year | ¥0.01 |
|
||||
| `paper_qa_search_pro` | Natural language Q&A + rich filters | **Default / prefer this** for semantic & filter search; card + cursor | ¥0.70 |
|
||||
| `paper_qa_search` | Legacy structured topic keywords | **Rarely**; only for `topic_high/middle/low` OR/AND | ¥0.05 |
|
||||
| `paper_list_by_keywords` | Multi-keyword batch retrieval | Batch thematic retrieval | ¥0.10 |
|
||||
| `paper_detail_by_condition` | Year + venue dimension | Journal annual monitoring | ¥0.20 |
|
||||
|
||||
Default routing:
|
||||
|
||||
1. **Known title**: `paper_search -> paper_detail -> paper_relation`
|
||||
2. **Conditional filtering**: `paper_search_pro -> paper_detail` (or `paper_qa_search_pro` when NL intent / citation-year soft filters help)
|
||||
3. **Natural language / topic Q&A**: **always prefer** `paper_qa_search_pro` → if empty, fall back to `paper_search_pro`. **Do not** start with legacy `paper_qa_search`.
|
||||
4. **Journal annual analysis**: `venue_search -> venue_paper_relation -> paper_detail_by_condition`
|
||||
|
||||
Key `paper_qa_search_pro` rules:
|
||||
- **Default choice** for natural-language paper search and multi-filter retrieval (`authors`/`author_ids`, `organizations`/`organization_ids`, `venues`/`venue_ids`, year/citation ranges, `all_terms`/`any_terms`/`exclude_terms`).
|
||||
- Page size is **fixed at 10**. Do not send `size`. Paginate with `next_cursor` → next request body is `{"cursor":"..."}` only.
|
||||
- `sort`: `relevance` / `balanced` / `recent` / `citation`. For “most cited” use `citation`; for “newest” use `recent`.
|
||||
- Response card fields only: `paper_id`, `title`, `title_zh`, `authors.name`/`name_zh`, `year`. Use `paper_detail` when full abstract/keywords are needed.
|
||||
- Always append `https://www.aminer.cn/pub/{paper_id}`.
|
||||
|
||||
Legacy `paper_qa_search` — use sparingly:
|
||||
- Call **only** when `topic_high` / `topic_middle` / `topic_low` structured OR/AND is explicitly required; otherwise use Pro.
|
||||
- `query` and `topic_high/topic_middle/topic_low` are **mutually exclusive**; do not pass both.
|
||||
- Supports `sci_flag`, `force_citation_sort`, `force_year_sort`, `author_id`, `org_id`, `venue_ids`.
|
||||
|
||||
Free-tier screening fields available:
|
||||
|
||||
- `paper_search`: `venue_name`, `first_author`, `n_citation_bucket`, `year`
|
||||
- `paper_info`: `abstract_slice`, `year`, `venue_id`, `author_count`
|
||||
- `person_search`: `interests`, `n_citation`, `org/org_id`
|
||||
- `organization_search`: `aliases`
|
||||
- `venue_search`: `aliases`, `venue_type`
|
||||
- `patent_search`: `inventor_name`, `app_year`, `pub_year`
|
||||
- `patent_info`: `app_year`, `pub_year`
|
||||
|
||||
---
|
||||
|
||||
## Handling Out-of-Workflow Requests
|
||||
|
||||
When the user's request falls outside the 5 workflows:
|
||||
|
||||
1. Read `references/api-catalog.md` to confirm available APIs, parameters, and response fields.
|
||||
2. Design the shortest viable call chain: locate ID → supplement details → expand relationships.
|
||||
3. Do not give up because "no existing workflow fits"; actively compose APIs based on `api-catalog`.
|
||||
|
||||
---
|
||||
|
||||
## 5 Combined Workflows
|
||||
|
||||
### Workflow 1: Scholar Profile (~¥6.00)
|
||||
|
||||
**Use Case**: Complete academic profile — bio, research interests, papers, patents, projects.
|
||||
**Cost note**: Full execution exceeds the ¥5 threshold → **must ask for user confirmation before proceeding** (Rule 7). Show the planned steps and cost. Confirm which sub-modules are needed; skip patents/projects if not requested.
|
||||
|
||||
**Call Chain:**
|
||||
```
|
||||
Scholar search (name → person_id)
|
||||
↓
|
||||
Parallel calls (pick as needed):
|
||||
├── Scholar details (bio/education/honors) ¥1.00
|
||||
├── Scholar portrait (interests/work history) ¥0.50
|
||||
├── Scholar papers (paper list) ¥1.50
|
||||
├── Scholar patents (patent list) ¥1.50
|
||||
└── Scholar projects (funding info) ¥1.50
|
||||
```
|
||||
|
||||
Fallback: if `paper_search` yields no results in sub-steps, fall back to `paper_search_pro`.
|
||||
|
||||
---
|
||||
|
||||
### Workflow 2: Paper Deep Dive (~¥0.12)
|
||||
|
||||
**Use Case**: Full paper information and citation chain from a title or keyword.
|
||||
|
||||
**Call Chain:**
|
||||
```
|
||||
Paper search / Paper search pro (title/keyword → paper_id)
|
||||
↓
|
||||
Paper details (abstract/authors/DOI/journal/year/keywords) ¥0.01
|
||||
↓
|
||||
Paper citations (cited papers → cited_ids) ¥0.10
|
||||
↓
|
||||
(Optional) Batch paper_info for cited papers Free
|
||||
```
|
||||
|
||||
Fallback: if `paper_search` yields no results, fall back to `paper_search_pro`.
|
||||
|
||||
---
|
||||
|
||||
### Workflow 3: Org Analysis (~¥0.81)
|
||||
|
||||
**Use Case**: Institution scholar size, paper output, patent count — for competitive research or partnership evaluation.
|
||||
|
||||
**Call Chain:**
|
||||
```
|
||||
Org disambiguation pro (raw string → org_id) ¥0.05
|
||||
↓
|
||||
Parallel calls:
|
||||
├── Org details (description/type) ¥0.01
|
||||
├── Org scholars (scholar list, 10/call) ¥0.50
|
||||
├── Org papers (paper list, 10/call) ¥0.10
|
||||
└── Org patents (patent IDs, up to 10,000) ¥0.10
|
||||
```
|
||||
|
||||
> If disambiguation pro returns no ID, fall back to `org_search` (free).
|
||||
|
||||
---
|
||||
|
||||
### Workflow 4: Venue Papers (~¥0.10 - ¥0.30)
|
||||
|
||||
**Use Case**: Track journal papers by year; useful for submission research or trend analysis.
|
||||
|
||||
**Call Chain:**
|
||||
```
|
||||
Venue search (name → venue_id) Free
|
||||
↓
|
||||
(Optional) Venue details (ISSN/type/abbreviation) ¥0.20
|
||||
↓
|
||||
Venue papers (venue_id + year → paper_id list) ¥0.10
|
||||
↓
|
||||
(Optional) Batch paper detail query
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Workflow 5: Patent Analysis (~¥0.02)
|
||||
|
||||
**Use Case**: Search patents in a technology domain, or retrieve a scholar's/institution's patent portfolio.
|
||||
|
||||
**Call Chain (standalone search):**
|
||||
```
|
||||
Patent search (query → patent_id) Free
|
||||
↓
|
||||
Patent info / Patent details Free / ¥0.01
|
||||
```
|
||||
|
||||
**Call Chain (via scholar/institution):**
|
||||
```
|
||||
Scholar search → Scholar patents (patent_id list)
|
||||
Org disambiguation → Org patents (patent_id list)
|
||||
↓
|
||||
Patent info / Patent details
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Individual API Quick Reference
|
||||
|
||||
> Full parameter docs: read `references/api-catalog.md`
|
||||
|
||||
| # | Title | Method | Price | API Path (Base: publicapi.chatglm.cn/chatglm_public/skill/aminer) |
|
||||
|---|------|------|------|------|
|
||||
| 1 | Paper QA Search Pro | POST | ¥0.70 | `/api/v3/paper/qa/searchPro` |
|
||||
| 2 | Paper QA Search (legacy) | POST | ¥0.05 | `/api/paper/qa/search` |
|
||||
| 3 | Scholar Search | POST | Free | `/api/person/search` |
|
||||
| 4 | Paper Search | GET | Free | `/api/paper/search` |
|
||||
| 5 | Paper Search Pro | GET | ¥0.01 | `/api/paper/search/pro` |
|
||||
| 6 | Patent Search | POST | Free | `/api/patent/search` |
|
||||
| 7 | Org Search | POST | Free | `/api/organization/search` |
|
||||
| 8 | Venue Search | POST | Free | `/api/venue/search` |
|
||||
| 9 | Scholar Details | GET | ¥1.00 | `/api/person/detail` |
|
||||
| 10 | Scholar Projects | GET | ¥1.50 | `/api/project/person/v3/open` |
|
||||
| 11 | Scholar Papers | GET | ¥1.50 | `/api/person/paper/relation` |
|
||||
| 12 | Scholar Patents | GET | ¥1.50 | `/api/person/patent/relation` |
|
||||
| 13 | Scholar Portrait | GET | ¥0.50 | `/api/person/figure` |
|
||||
| 14 | Paper Info | POST | Free | `/api/paper/info` |
|
||||
| 15 | Paper Details | GET | ¥0.01 | `/api/paper/detail` |
|
||||
| 16 | Paper Citations | GET | ¥0.10 | `/api/paper/relation` |
|
||||
| 17 | Patent Info | GET | Free | `/api/patent/info` |
|
||||
| 18 | Patent Details | GET | ¥0.01 | `/api/patent/detail` |
|
||||
| 19 | Org Details | POST | ¥0.01 | `/api/organization/detail` |
|
||||
| 20 | Org Patents | GET | ¥0.10 | `/api/organization/patent/relation` |
|
||||
| 21 | Org Scholars | GET | ¥0.50 | `/api/organization/person/relation` |
|
||||
| 22 | Org Papers | GET | ¥0.10 | `/api/organization/paper/relation` |
|
||||
| 23 | Venue Details | POST | ¥0.20 | `/api/venue/detail` |
|
||||
| 24 | Venue Papers | POST | ¥0.10 | `/api/venue/paper/relation` |
|
||||
| 25 | Org Disambiguation | POST | ¥0.01 | `/api/organization/na` |
|
||||
| 26 | Org Disambiguation Pro | POST | ¥0.05 | `/api/organization/na/pro` |
|
||||
| 27 | Paper Batch Query | GET | ¥0.10 | `/api/paper/list/citation/by/keywords` |
|
||||
| 28 | Paper Details by Year+Venue | GET | ¥0.20 | `/api/paper/platform/allpubs/more/detail/by/ts/org/venue` |
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- Full API parameter documentation: read `references/api-catalog.md`
|
||||
- Optional Python client: `scripts/aminer_client.py`
|
||||
- Test cases: `evals/evals.json`
|
||||
- Official documentation: https://open.aminer.cn/open/docs
|
||||
- Console: https://open.aminer.cn/open/board?tab=control
|
||||
+166
@@ -0,0 +1,166 @@
|
||||
{
|
||||
"skill_name": "aminer-academic-search",
|
||||
"evals": [
|
||||
{
|
||||
"id": 1,
|
||||
"prompt": "I'd like to understand Andrew Ng's complete academic profile, including his research interests, important papers he has published, any patents, and research projects he has participated in. Please use the AMiner API to look this up for me. My token is <YOUR_TOKEN>",
|
||||
"expected_output": "The estimated cost (~¥6.00) exceeds the ¥5 threshold. Before executing, display the planned call chain and cost breakdown, and ask the user for confirmation. After the user confirms, run the scholar_profile workflow. After completion, output a cost summary.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Displayed the planned call chain with estimated cost BEFORE making paid API calls",
|
||||
"Estimated total cost exceeds ¥5, so asked the user for confirmation before proceeding",
|
||||
"After user confirmation, called Scholar Search, Scholar Details, Scholar Portrait, Scholar Papers, etc.",
|
||||
"Output contains the selected.name field with value Andrew Ng",
|
||||
"Output contains a cost summary showing each API called and total cost"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"prompt": "Help me deep-dive into the paper 'Attention Is All You Need' — find it, retrieve its full details (abstract, authors, year), and then see what references it cites. My AMiner token is <YOUR_TOKEN>",
|
||||
"expected_output": "Run the paper_deep_dive workflow: search for the paper → retrieve details → retrieve citation relationships. Output the paper abstract, author list, DOI, and list of cited papers.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Called a Paper Search API to locate the target paper",
|
||||
"Called the Paper Details API (paper_detail) to retrieve the abstract",
|
||||
"Called the Paper Citations API (paper_relation) to retrieve the citation list",
|
||||
"Output contains the detail field with an abstract sub-field",
|
||||
"Output contains the citations_count or citations_preview field"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"prompt": "I need to analyze MIT's research strength — I'd like to know which prominent scholars are affiliated with them, what papers they have published, and what patents they hold. Please use the AMiner API to compile a report for me. Token: <YOUR_TOKEN>",
|
||||
"expected_output": "Run the org_analysis workflow: use Org Disambiguation Pro to find MIT's institution ID, then fetch institution details, scholar list, and paper list in parallel, and compile into a report.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Called the Org Disambiguation Pro API (org_disambiguate_pro) to obtain the institution ID",
|
||||
"Called the Org Details API (org_detail) to retrieve MIT's description",
|
||||
"Called the Org Scholars API (org_person_relation) to retrieve the scholar list",
|
||||
"Called the Org Papers API (org_paper_relation) to retrieve the paper list",
|
||||
"Output contains the org_id field",
|
||||
"Output contains the scholars or papers field"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"prompt": "Help me look up Andrew Ng's publication trends",
|
||||
"expected_output": "Detect that the user has not provided a token; immediately stop all subsequent API calls and guide the user to obtain a token from the AMiner Console.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Clearly inform the user that a token is currently missing and AMiner API calls cannot continue",
|
||||
"No API calls were made",
|
||||
"Provide the console link https://open.aminer.cn/open/board?tab=control",
|
||||
"Prompt the user to continue after obtaining a token"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"prompt": "Help me look up Fei-Fei Li from Stanford University on AMiner and give me her most-cited papers and her most recent papers. My token is <YOUR_TOKEN>",
|
||||
"expected_output": "Prefer paper_qa_search_pro with author_ids/organization_ids filters. First call with sort=citation, then with sort=recent. Each call returns up to 10 card items (fixed page size).",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Called the Scholar Search API (person_search) to confirm Fei-Fei Li's author_id",
|
||||
"Called paper_qa_search_pro with author_ids (and organization_ids when available)",
|
||||
"Executed two separate queries: one with sort=citation and one with sort=recent",
|
||||
"Each result set returns paper_id/title(/title_zh)/year card fields and AMiner URLs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"prompt": "Help me check what papers were published in NeurIPS in 2023. My token is <YOUR_TOKEN>",
|
||||
"expected_output": "Run the venue_papers workflow: venue search to get venue_id, then venue_paper_relation with year=2023 to list papers.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Called the Venue Search API (venue_search) to find NeurIPS venue_id",
|
||||
"Called the Venue Papers API (venue_paper_relation) with year=2023",
|
||||
"Output contains a list of paper titles and IDs",
|
||||
"Each paper entity has an AMiner URL appended"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"prompt": "Search for patents related to quantum computing chips and show me the details of the top results. My token is <YOUR_TOKEN>",
|
||||
"expected_output": "Run patent_search to find patents, then patent_detail for the top results. Output patent titles, inventors, IPC codes, and abstracts.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Called the Patent Search API (patent_search) with query about quantum computing",
|
||||
"Called the Patent Details API (patent_detail) for at least one result",
|
||||
"Output contains patent titles and patent URLs",
|
||||
"Output includes structured fields like IPC or assignee"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"prompt": "帮我查一下唐杰的学术信息,我的 token 是 <YOUR_TOKEN>",
|
||||
"expected_output": "Handle Chinese input: search for the scholar by Chinese name, return profile information with AMiner URLs.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Called the Scholar Search API (person_search) with a Chinese name",
|
||||
"Successfully returned scholar results (name, org, interests)",
|
||||
"Output contains the scholar's AMiner profile URL",
|
||||
"Response is presented clearly despite Chinese input"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"prompt": "Find me all details about a scholar named XXXNOEXISTSCHOLAR on AMiner. My token is <YOUR_TOKEN>",
|
||||
"expected_output": "Handle empty results gracefully: inform the user that no matching scholar was found, suggest refining the query.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Called the Scholar Search API (person_search)",
|
||||
"Detected that no results were returned",
|
||||
"Clearly informed the user that no matching scholar was found",
|
||||
"Did NOT proceed to call paid detail APIs with invalid IDs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"prompt": "Help me find all papers about deep learning and give me the full details for every single one. My token is <YOUR_TOKEN>",
|
||||
"expected_output": "Apply cost control: search returns many results, but only fetch details for the top 10 by default. Inform the user that results were limited to control costs.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Called a paper search API and found many results",
|
||||
"Did NOT call paper_detail for all results",
|
||||
"Fetched details for at most 10 papers",
|
||||
"Informed the user that results were limited and they can request more if needed"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"prompt": "Call the AMiner venue_search API directly for 'Nature' and show me the raw result. My token is <YOUR_TOKEN>",
|
||||
"expected_output": "Use the raw API call mode to invoke venue_search with name='Nature'. Return the raw JSON response including venue_id, standard name, aliases, and venue_type.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Called venue_search API directly (raw mode or equivalent curl call)",
|
||||
"Output includes the raw API response with venue_id and name fields",
|
||||
"Output includes a venue URL for the result",
|
||||
"Did not invoke any unnecessary paid APIs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"prompt": "I need to find patents held by Shou-Cheng Zhang. My token is <YOUR_TOKEN>",
|
||||
"expected_output": "Run the scholar_patents workflow: search scholar by name, then retrieve patent list via person_patent_relation, then fetch patent details for top results. Output a cost summary at the end.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Called Scholar Search API (person_search) to find the scholar",
|
||||
"Called Scholar Patents API (person_patent_relation) to retrieve patent list",
|
||||
"Called Patent Details API (patent_detail) for at least one patent",
|
||||
"Output includes patent titles and patent URLs",
|
||||
"Output includes a cost summary at the end"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"prompt": "Help me deep-dive into the paper 'BERT: Pre-training of Deep Bidirectional Transformers' — get the full details and citation chain. My token is <YOUR_TOKEN>",
|
||||
"expected_output": "Run the paper_deep_dive workflow (estimated ~¥0.12, below the ¥5 threshold, so no confirmation needed). After completion, output a cost summary showing each API called and total cost.",
|
||||
"files": [],
|
||||
"expectations": [
|
||||
"Did NOT ask for cost confirmation (estimated cost is well below ¥5)",
|
||||
"Called paper search, paper detail, and paper relation APIs",
|
||||
"Output includes paper abstract, authors, and citation information",
|
||||
"Output includes a cost summary at the end showing APIs called and total cost"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+1175
File diff suppressed because it is too large.
Load diff
+1154
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user