当前位置: 首页 > news >正文

如何用 Groq API 免费使用 DeepSeek-R1 70B,并通过 Deno 实现国内访问

这几天都被Deepseek刷屏了,而且Deepseek由于异常访问量,这几天都不能愉快的和它玩耍了,

我发现Groq新增了一个Deepseek的70b参数的模型,

DeepSeek-R1 70B 作为一款强大的开源模型,提供了卓越的推理能力,而 Groq API 提供了一个免费访问该模型的途径。然而,由于 Groq API 在国内无法直接访问,我们可以借助 Deno 进行代理,实现无缝调用。

一、问题分析

1. Groq API 的优势

  • 免费使用 DeepSeek-R1 70B

  • 计算速度快

  • API 设计简洁

2. 国内访问的挑战

  • 直接访问 Groq API 可能受限

  • 需要稳定、易用的代理方案

二、解决方案

1. 通过 Groq API 调用 DeepSeek-R1 70B

首先,需要注册 Groq 账号并获取 API Key。然后,调用 Groq API 的接口请求 DeepSeek-R1 70B 进行推理。

Groq is Fast AI InferenceThe LPU™ Inference Engine by Groq is a hardware and software platform that delivers exceptional compute speed, quality, and energy efficiency. Groq provides cloud and on-prem solutions at scale for AI applications.https://groq.com/https://groq.com/

当申请下来key以后,下面python代码可以测试key

import requestsdef chat_api_curl(prompt):# 请确保将以下变量替换为您的实际API密钥openai_api_key = 'GROQ_KEY'headers = {"Content-Type": "application/json","Authorization": f"Bearer {openai_api_key}"}data = {"model": "deepseek-r1-distill-llama-70b","messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": prompt},]}response = requests.post("https://api.groq.com/openai/v1/chat/completions", headers=headers, json=data)# 检查响应是否成功if response.status_code == 200:# 解析响应数据response_data = response.json()# 获取choices列表中的第一个元素的message字典的content值content = response_data['choices'][0]['message']['content']return contentelse:print("请求失败,状态码:", response.status_code)print("响应内容:", response.text)prompt = "你是什么模型?"
res = chat_api_curl(prompt)
print(res)

可以看到回答如下:

2. 使用 Deno 作为国内访问代理

Deno 作为一个现代化的 JavaScript 运行时,支持原生 TypeScript,且内置 HTTP 服务器,非常适合快速搭建代理。我们可以在 Deno 上部署一个代理服务,将国内请求转发至 Groq API。

这里简单介绍一下Deno:

Deno 是一个现代的 JavaScript/TypeScript 运行时环境,由 Node.js 的创造者 Ryan Dahl 发起。它旨在解决 Node.js 中的一些设计缺陷,并提供更安全、更简洁的开发体验。

Deno 的几个特点:

  1. 内置 TypeScript 支持:Deno 原生支持 TypeScript,无需额外配置。
  2. 安全性:默认情况下,Deno 对文件、网络和环境变量访问进行限制,只有明确授权的操作才可以执行。
  3. 标准库:Deno 提供了一套标准库,不依赖第三方包管理工具(如 npm)。
  4. 简洁的模块系统:模块直接通过 URL 引入,而不是依赖本地的 package.json。
  5. 单一二进制文件:Deno 是一个单一的二进制文件,没有复杂的安装过程。

总的来说,Deno 是一个轻量级、现代化的运行时环境,特别适合快速开发和现代 Web 应用。

Deno, the next-generation JavaScript runtimeDeno features improved security, performance, and developer experience compared to its predecessor. It's a great time to upgrade your Node.js project to run on Deno.https://deno.com/https://deno.com/

部署过程如下:

Deno DeployDeno Deploy: deploy JavaScript globally to the edge.https://dash.deno.com/account/overviewhttps://dash.deno.com/account/overview

将下面代码拷贝过去:

interface RateLimiter {requests: number;tokens: number;lastReset: number;
}const rateLimiter: RateLimiter = {requests: 0,tokens: 0,lastReset: Date.now(),
};function estimateTokens(body: any): number {try {const messages = body?.messages || [];return messages.reduce((acc: number, msg: any) => acc + (msg.content?.length || 0) * 0.25, 0);} catch {return 0;}
}function resetCountersIfNeeded() {const now = Date.now();if (now - rateLimiter.lastReset >= 60000) {rateLimiter.requests = 0;rateLimiter.tokens = 0;rateLimiter.lastReset = now;}
}async function processResponse(response: Response): Promise<Response> {const contentType = response.headers.get('content-type');if (contentType?.includes('application/json')) {const jsonData = await response.json();if (jsonData.choices && jsonData.choices[0]?.message?.content) {const content = jsonData.choices[0].message.content;const processedContent = content.replace(/<think>.*?<\/think>\s*/s, '').trim();jsonData.choices[0].message.content = processedContent;}return new Response(JSON.stringify(jsonData), {status: response.status,headers: response.headers});}return response;
}async function handleRequest(request: Request): Promise<Response> {const url = new URL(request.url);const pathname = url.pathname;if (pathname === '/' || pathname === '/index.html') {return new Response('Proxy is Running!', {status: 200,headers: { 'Content-Type': 'text/html' }});}if (pathname.includes('api.groq.com')) {resetCountersIfNeeded();if (rateLimiter.requests >= 30) {return new Response('Rate limit exceeded. Max 30 requests per minute.', {status: 429,headers: {'Retry-After': '60','Content-Type': 'application/json'}});}try {const bodyClone = request.clone();const body = await bodyClone.json();const estimatedTokens = estimateTokens(body);if (rateLimiter.tokens + estimatedTokens > 6000) {return new Response('Token limit exceeded. Max 6000 tokens per minute.', {status: 429,headers: {'Retry-After': '60','Content-Type': 'application/json'}});}rateLimiter.tokens += estimatedTokens;} catch (error) {console.error('Error parsing request body:', error);}rateLimiter.requests++;}const targetUrl = `https://${pathname}`;try {const headers = new Headers();const allowedHeaders = ['accept', 'content-type', 'authorization'];for (const [key, value] of request.headers.entries()) {if (allowedHeaders.includes(key.toLowerCase())) {headers.set(key, value);}}const response = await fetch(targetUrl, {method: request.method,headers: headers,body: request.body});const responseHeaders = new Headers(response.headers);responseHeaders.set('Referrer-Policy', 'no-referrer');responseHeaders.set('X-RateLimit-Remaining', `${30 - rateLimiter.requests}`);responseHeaders.set('X-TokenLimit-Remaining', `${6000 - rateLimiter.tokens}`);const processedResponse = await processResponse(response);return new Response(processedResponse.body, {status: processedResponse.status,headers: responseHeaders});} catch (error) {console.error('Failed to fetch:', error);return new Response(JSON.stringify({error: 'Internal Server Error',message: error.message}), { status: 500,headers: {'Content-Type': 'application/json'}});}
}Deno.serve(handleRequest);

最后生成的地址和groq的地址拼接起来就是国内可以访问的url地址:

https://epic-gecko-41.deno.dev/api.groq.com/openai/v1/chat/completions

  如何使用,以openwebui 为例,其他AI模型都可以参照这个

代理地址填入刚才拼接生成的地址,apikey就填写groq的apikey

回答速度超级快。

如果用python调用,回答结果如下:

Github项目地址:

https://github.com/wuhanwhite/geno_groq_proxyhttps://github.com/wuhanwhite/geno_groq_proxy

相关文章:

如何用 Groq API 免费使用 DeepSeek-R1 70B,并通过 Deno 实现国内访问

这几天都被Deepseek刷屏了&#xff0c;而且Deepseek由于异常访问量&#xff0c;这几天都不能愉快的和它玩耍了&#xff0c; 我发现Groq新增了一个Deepseek的70b参数的模型&#xff0c; DeepSeek-R1 70B 作为一款强大的开源模型&#xff0c;提供了卓越的推理能力&#xff0c;而 …...

iperf 测 TCP 和 UDP 网络吞吐量

注&#xff1a;本文为 “iperf 测网络吞吐量” 相关文章合辑。 未整理去重。 使用 iperf3 监测网络吞吐量 Tom 王 2019-12-21 22:23:52 一 iperf3 介绍 (1.1) iperf3 是一个网络带宽测试工具&#xff0c;iperf3 可以擦拭 TCP 和 UDP 带宽质量。iperf3 可以测量最大 TCP 带宽…...

Autogen_core: Model Context

目录 示例代码代码解释另一个例子 示例代码 from dataclasses import dataclassfrom autogen_core import AgentId, MessageContext, RoutedAgent, SingleThreadedAgentRuntime, message_handler from autogen_core.model_context import BufferedChatCompletionContext from …...

SpringBoot AOP 和 事务

SpringBoot 整合 AOP 动态代理技术 JDK 动态代理 JDK 动态代理是 Java 自带的一种代理方式。它要求目标类必须有接口&#xff0c;基于这个接口&#xff0c;JDK 在运行时会动态生成一个代理对象。这个代理对象和目标对象就像 “拜把子” 的兄弟&#xff0c;因为它们都实现了相同…...

Ubuntu全面卸载mysql

如果你已经看到whereis mysql输出了与MySQL相关的路径&#xff0c;说明MySQL仍然存在于系统中。要卸载MySQL&#xff0c;可以按照以下步骤操作&#xff0c;确保完全删除所有相关的文件和配置&#xff1a; 1. 停止MySQL服务 首先&#xff0c;停止MySQL服务&#xff1a; sudo …...

android的gradle

资料&#xff1a; GitHub - ChenSWD/CopyGradleInAction: 备份《Gradle IN Action》书中的源码&#xff0c;添加了部分注释 //github上一个开源项目&#xff0c;外加pdf书 Gradle User Manual gradle官网 讲的挺好的博客 Gradle之重新认识Gradle(项目结构、命令行、tas…...

前端开发之jsencrypt加密解密的使用方法和使用示例

目录 RSA密钥生成选项简介 jsencrypt 使用教程 一、安装 jsencrypt 二、使用 jsencrypt 进行加密和解密 1. 创建密钥对 2. 加密数据 3. 解密数据 三、实际应用示例 加密数据并存储到 localStorage 中&#xff1a; 从 localStorage 中读取加密数据并解密&#xff1a; …...

电路研究9.2.5——合宙Air780EP中GPS 相关命令使用方法研究

注&#xff1a;本命令仅适用于合宙 4G CAT1 模块&#xff08;Air780EG 系列&#xff09;。 正好&#xff0c;我们使用的Air780EP好像也有4G CAT1模块&#xff0c;好像也属于Air780EG系列吧。 这个例子好像比较少就个。 18.9 使用方法举例 18.1GPS 开关&#xff1a;ATCGNSPWR 这…...

Python标准库 - os (3) 调度策略、系统信息

文章目录 6 调度策略6.1 调度策略常量6.2 访问和设置进程的调度策略 7 系统信息7.1 系统信息7.2 系统配置信息7.3 系统负载7.4 路径相关常量7.5 生成随机字节 os模块提供了各种操作系统接口。包括环境变量、进程管理、进程调度、文件操作等方面。 这里整理了进程调度和查看系统…...

【NLP251】NLP RNN 系列网络

NLP251 系列主要记录从NLP基础网络结构到知识图谱的学习 &#xff11;.原理及网络结构 &#xff11;.&#xff11;&#xff32;&#xff2e;&#xff2e; 在Yoshua Bengio论文中( http://proceedings.mlr.press/v28/pascanu13.pdf )证明了梯度求导的一部分环节是一个指数模型…...

【漫话机器学习系列】067.希腊字母(greek letters)-写法、名称、读法和常见用途

希腊字母&#xff08;Greek Letters&#xff09; 希腊字母在数学、科学、工程学和编程中广泛使用&#xff0c;常用于表示变量、常量、参数、角度等。以下是希腊字母的完整列表及其常见用途。 大写与小写希腊字母表 大写小写名称&#xff08;英文&#xff09;名称&#xff08;…...

2.文件IO

2.文件IO **1. 文件I/O概述****2. 文件I/O函数接口****3. 文件定位****4. 文件描述符与文件流指针的转换****5. 文件I/O与标准I/O的比较****6. 练习与作业****7. 文件I/O与标准I/O的对应关系****8. 其他注意事项****9. 总结** 1. 文件I/O概述 文件I/O&#xff1a;操作系统为了…...

毕业设计--具有车流量检测功能的智能交通灯设计

摘要&#xff1a; 随着21世纪机动车保有量的持续增加&#xff0c;城市交通拥堵已成为一个日益严重的问题。传统的固定绿灯时长方案导致了大量的时间浪费和交通拥堵。为解决这一问题&#xff0c;本文设计了一款智能交通灯系统&#xff0c;利用车流量检测功能和先进的算法实现了…...

【SpringBoot教程】Spring Boot + MySQL + HikariCP 连接池整合教程

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 在前面一篇文章中毛毛张介绍了SpringBoot中数据源与数据库连接池相关概念&#xff0c;今天毛毛张要分享的是关于SpringBoot整合HicariCP连接池相关知识点以及底层源码…...

设计模式的艺术-策略模式

行为型模式的名称、定义、学习难度和使用频率如下表所示&#xff1a; 1.如何理解策略模式 在策略模式中&#xff0c;可以定义一些独立的类来封装不同的算法&#xff0c;每个类封装一种具体的算法。在这里&#xff0c;每个封装算法的类都可以称之为一种策略&#xff08;Strategy…...

【memgpt】letta 课程1/2:从头实现一个自我编辑、记忆和多步骤推理的代理

llms-as-operating-systems-agent-memory llms-as-operating-systems-agent-memory内存 操作系统的内存管理...

动态规划DP 最长上升子序列模型 合唱队形(题目分析+C++完整代码)

概览检索 动态规划DP 最长上升子序列模型 合唱队形 原题链接 AcWiing 482. 合唱队形 题目描述 N位同学站成一排&#xff0c;音乐老师要请其中的 (N−K)位同学出列&#xff0c;使得剩下的 K位同学排成合唱队形。 合唱队形是指这样的一种队形&#xff1a;设 K位同学从左到右…...

【踩坑】解决Hugging-face下载问题

解决Hugging-face下载问题 问题1&#xff1a;couldnt connect to https://huggingface.co问题2&#xff1a;HTTPSConnectionPool(hostcdn-lfs-us-1.hf-mirror.com, port443)设置hf_transfer加快速度 问题3&#xff1a;requests.exceptions.ChunkedEncodingError: (Connection b…...

Spring AI 在微服务中的应用:支持分布式 AI 推理

1. 引言 在现代企业中&#xff0c;微服务架构 已成为开发复杂系统的主流方式&#xff0c;而 AI 模型推理 也越来越多地被集成到业务流程中。如何在分布式微服务架构下高效地集成 Spring AI&#xff0c;使多个服务可以协同完成 AI 任务&#xff0c;并支持分布式 AI 推理&#x…...

5.3.2 软件设计原则

文章目录 抽象模块化信息隐蔽与独立性衡量 软件设计原则&#xff1a;抽象、模块化、信息隐蔽。 抽象 抽象是抽出事物本质的共同特性。过程抽象是指将一个明确定义功能的操作当作单个实体看待。数据抽象是对数据的类型、操作、取值范围进行定义&#xff0c;然后通过这些操作对数…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...