Spaces:
Build error
Build error
File size: 2,111 Bytes
f0499d2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
import { StructuredTool } from "langchain/tools";
import { z } from "zod";
export class ArxivAPIWrapper extends StructuredTool {
get lc_namespace() {
return [...super.lc_namespace, "test"];
}
name = "arxiv";
description = "Run Arxiv search and get the article information.";
SORT_BY = {
RELEVANCE: "relevance",
LAST_UPDATED_DATE: "lastUpdatedDate",
SUBMITTED_DATE: "submittedDate",
};
SORT_ORDER = {
ASCENDING: "ascending",
DESCENDING: "descending",
};
schema = z.object({
searchQuery: z
.string()
.describe("same as the search_query parameter rules of the arxiv API."),
sortBy: z
.string()
.describe('can be "relevance", "lastUpdatedDate", "submittedDate".'),
sortOrder: z
.string()
.describe('can be either "ascending" or "descending".'),
start: z
.number()
.default(0)
.describe("the index of the first returned result."),
maxResults: z
.number()
.default(10)
.describe("the number of results returned by the query."),
});
async _call({
searchQuery,
sortBy,
sortOrder,
start,
maxResults,
}: z.infer<typeof this.schema>) {
if (sortBy && !Object.values(this.SORT_BY).includes(sortBy)) {
throw new Error(
`unsupported sort by option. should be one of: ${Object.values(
this.SORT_BY,
).join(" ")}`,
);
}
if (sortOrder && !Object.values(this.SORT_ORDER).includes(sortOrder)) {
throw new Error(
`unsupported sort order option. should be one of: ${Object.values(
this.SORT_ORDER,
).join(" ")}`,
);
}
try {
let url = `http://export.arxiv.org/api/query?search_query=${searchQuery}&start=${start}&max_results=${maxResults}${
sortBy ? `&sortBy=${sortBy}` : ""
}${sortOrder ? `&sortOrder=${sortOrder}` : ""}`;
console.error("[arxiv]", url);
const response = await fetch(url);
const data = await response.text();
return data;
} catch (e) {
console.error("[arxiv]", e);
}
return "not found";
}
}
|