Implementación de la api gratuita de hugging face en cloudflare para soportar el reenvío de interfaces
Últimos recursos sobre IAActualizado hace 10 meses Círculo de intercambio de inteligencia artificial 2K 00
Dado que el rostro abrazador es inaccesible para los despliegues domésticos, se encuentra en el Gran HermanoPrograma de despliegueestá adaptado para poder desplegarse en cloudflare workers.
preliminar
1. Registro cloudflare
2. Registre hugging face y solicite la clave api.Solicitar dirección de clave api
3. Copie el siguiente código e impleméntelo en cloudflare workers.
4、Support in oneapi/newapi click "get model list" a key to add available models
El código de los trabajadores de cloudflare es el siguiente:
//对接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)) })
Se recomienda el modelo Mil preguntas 2.5, todos los demás modelos buenos requieren una suscripción.
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...