Skip to content

Commit 62b10f6

Browse files
committed
[tool] hugging face docs tool
1 parent 900a9b3 commit 62b10f6

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

src/lib/server/tools/hfDocs.ts

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import type { BackendTool } from ".";
2+
import { callSpace, getIpToken } from "./utils";
3+
4+
const hfDocs: BackendTool = {
5+
name: "hf_docs",
6+
displayName: "Hugging Face Docs",
7+
description:
8+
"Use this tool to get relevant docs snippets regarding Hugging Face open source libraries (transformers, diffusers, accelerate, huggingface_hub) and Hugging Face hf.co platform.",
9+
isOnByDefault: true,
10+
parameterDefinitions: {
11+
query: {
12+
required: true,
13+
type: "string",
14+
description:
15+
"A search query which will be used to fetch the most relevant docs snippets regarding the user's query",
16+
},
17+
},
18+
async *call({ query }, { messages, ip, username }) {
19+
const ipToken = await getIpToken(ip, username);
20+
21+
const userMessages = messages.filter(({ from }) => from === "user");
22+
const previousUserMessages = userMessages.slice(0, -1);
23+
24+
const queryWithPreviousMsgs =
25+
(previousUserMessages.length
26+
? `Previous questions: \n${previousUserMessages
27+
.map(({ content }) => `- ${content}`)
28+
.join("\n")}`
29+
: "") +
30+
"\n\nCurrent Question: " +
31+
String(query);
32+
33+
const outputs = await callSpace<string[], string[]>(
34+
"huggingchat/hf-docs",
35+
"/predict",
36+
[queryWithPreviousMsgs, "RAG-friendly"],
37+
ipToken
38+
);
39+
40+
return {
41+
outputs: [{ hfDocs: outputs[0] }],
42+
display: false,
43+
};
44+
},
45+
};
46+
47+
export default hfDocs;

src/lib/server/tools/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { MessageUpdate } from "$lib/types/MessageUpdate";
22
import type { Tool, ToolResultSuccess } from "$lib/types/Tool";
33

44
import calculator from "./calculator";
5+
import hfDocs from "./hfDocs";
56
import directlyAnswer from "./directlyAnswer";
67
import imageEditing from "./images/editing";
78
import imageGeneration from "./images/generation";
@@ -30,4 +31,5 @@ export const allTools: BackendTool[] = [
3031
imageEditing,
3132
documentParser,
3233
calculator,
34+
hfDocs,
3335
];

0 commit comments

Comments
 (0)