Hugging Face 是一个专注于自然语言处理和机器学习的开源平台,提供海量预训练模型、数据集及工具,是 AI 社区最主流的模型共享与协作中心。
API
免费用户每天有 1000 次请求的限制。
代理服务
通过 Docker 运行
h-mygit-f/hg-api2: huggingface
通过 Cloudflare 运行
//对接one-api/new-api使用const API_KEY = "sk-1234567890";
//你的hugging face api key去hugging face申请const HUGGINGFACE_API_KEY = "hf_xxxxxxxxxxx";
//目前发现的可用模型,请求时如模型不在该列表内,则使用你请求的模型const CUSTOMER_MODEL_MAP = { "qwen2.5-72b-instruct": "Qwen/Qwen2.5-72B-Instruct", "gemma2-2b-it": "google/gemma-2-2b-it", "gemma2-27b-it": "google/gemma-2-27b-it", "llama-3-8b-instruct": "meta-llama/Meta-Llama-3-8B-Instruct", "llama-3.2-1b-instruct": "meta-llama/Llama-3.2-1B-Instruct", "llama-3.2-3b-instruct": "meta-llama/Llama-3.2-3B-Instruct", "phi-3.5": "microsoft/Phi-3.5-mini-instruct",};
async function handleRequest(request) { try { if (request.method === "OPTIONS") { return getResponse("", 204); }
const authHeader = request.headers.get("Authorization"); if ( !authHeader || !authHeader.startsWith("Bearer ") || authHeader.split(" ")[1] !== API_KEY ) { return getResponse("Unauthorized", 401); }
if (request.url.endsWith("/v1/models")) { const arrs = []; Object.keys(CUSTOMER_MODEL_MAP).map((element) => arrs.push({ id: element, object: "model" }) ); const response = { data: arrs, success: true, };
return getResponse(JSON.stringify(response), 200); }
if (request.method !== "POST") { return getResponse("Only POST requests are allowed", 405); }
if (!request.url.endsWith("/v1/chat/completions")) { return getResponse("Not Found", 404); }
const data = await request.json(); const messages = data.messages || []; const model = CUSTOMER_MODEL_MAP[data.model] || data.model; const temperature = data.temperature || 0.7; const max_tokens = data.max_tokens || 8196; const top_p = Math.min(Math.max(data.top_p || 0.9, 0.0001), 0.9999); const stream = data.stream || false;
const requestBody = { model: model, stream: stream, temperature: temperature, max_tokens: max_tokens, top_p: top_p, messages: messages, };
const apiUrl = `https://api-inference.huggingface.co/models/${model}/v1/chat/completions`; const response = await fetch(apiUrl, { method: "POST", headers: { Authorization: `Bearer ${HUGGINGFACE_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify(requestBody), });
if (!response.ok) { const errorText = await response.text(); return getResponse( `Error from API: ${response.statusText} - ${errorText}`, response.status ); }
const newResponse = new Response(response.body, { status: response.status, headers: { ...Object.fromEntries(response.headers), "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "*", "Access-Control-Allow-Headers": "*", }, });
return newResponse; } catch (error) { return getResponse( JSON.stringify({ error: `处理请求失败: ${error.message}`, }), 500 ); }}
function getResponse(resp, status) { return new Response(resp, { status: status, headers: { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "*", "Access-Control-Allow-Headers": "*", }, });}
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event.request));});