mgbam commited on
Commit
414512a
·
verified ·
1 Parent(s): 7211e95

Create src/services/huggingface.js

Browse files
Files changed (1) hide show
  1. src/services/huggingface.js +50 -0
src/services/huggingface.js ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // This service calls the Hugging Face Inference API.
2
+ // It's best for models fine-tuned for JSON output, like Llama 3.
3
+
4
+ export const callHuggingFaceAPI = async (prompt, apiKey, maxTokens = 2000) => {
5
+ if (!apiKey) {
6
+ throw new Error("Hugging Face API Key is required.");
7
+ }
8
+
9
+ // Recommended model: Meta's Llama 3 is excellent at following instructions.
10
+ const API_URL = "https://api-inference.huggingface.co/models/meta-llama/Meta-Llama-3-8B-Instruct";
11
+
12
+ const headers = {
13
+ "Authorization": `Bearer ${apiKey}`,
14
+ "Content-Type": "application/json",
15
+ };
16
+
17
+ const payload = {
18
+ inputs: prompt,
19
+ parameters: {
20
+ max_new_tokens: maxTokens,
21
+ return_full_text: false, // Important: only return the generated text
22
+ temperature: 0.6, // A bit of creativity but still factual
23
+ top_p: 0.9,
24
+ }
25
+ };
26
+
27
+ try {
28
+ const response = await fetch(API_URL, {
29
+ method: "POST",
30
+ headers: headers,
31
+ body: JSON.stringify(payload),
32
+ });
33
+
34
+ if (!response.ok) {
35
+ const errorText = await response.text();
36
+ throw new Error(`Hugging Face API request failed: ${response.status} - ${errorText}`);
37
+ }
38
+
39
+ const data = await response.json();
40
+ // The response is an array, we take the first element's generated text.
41
+ if (data && data[0] && data[0].generated_text) {
42
+ return data[0].generated_text;
43
+ } else {
44
+ throw new Error("Invalid response structure from Hugging Face API.");
45
+ }
46
+ } catch (error) {
47
+ console.error("Hugging Face API Error:", error);
48
+ throw error;
49
+ }
50
+ };