Groq - API
📋 服务信息
提供者: Groq
服务类型: API 服务
API 端点: https://api.groq.com/openai/v1
免费类型: 永久免费(有使用限制)
API 兼容性: 完全兼容 OpenAI API
🎯 服务简介
Groq API 提供业界最快的 LLM 推理服务,完全兼容 OpenAI API 格式,让您只需修改 base_url 即可将现有代码切换到 Groq。
核心优势:
- ⚡ 业界最快 - 800+ tokens/s 推理速度
- 🔄 OpenAI 兼容 - 无缝迁移现有代码
- 🎁 超高配额 - 14,400 请求/天
- 💰 完全免费 - 无隐藏费用
- 🚀 低延迟 - 毫秒级首 token 响应
🚀 快速开始
前提条件
必需:
- ✅ 已创建 API 密钥
详细步骤请参考:Groq 注册指南
5 分钟快速示例
方法 1:使用 Groq SDK(推荐)
Bash
pip install groqPython
from groq import Groq
# 初始化客户端
client = Groq(api_key="YOUR_API_KEY")
# 发送请求
chat_completion = client.chat.completions.create(
messages=[
{
"role": "user",
"content": "解释一下 Groq 的 LPU 技术",
}
],
model="llama-3.3-70b-versatile",
)
# 打印响应
print(chat_completion.choices[0].message.content)方法 2:使用 OpenAI SDK(兼容模式)
Python
from openai import OpenAI
# 只需修改 base_url 和 api_key
client = OpenAI(
base_url="https://api.groq.com/openai/v1",
api_key="YOUR_API_KEY"
)
# 其余代码与 OpenAI 完全相同
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[
{"role": "user", "content": "你好"}
]
)
print(response.choices[0].message.content)🤖 支持的模型
Llama 系列(推荐)
| 模型 ID | 参数量 | 上下文 | 速度 | 适用场景 |
|---|---|---|---|---|
llama-3.3-70b-versatile |
70B | 128K | ⚡⚡⚡ | 通用任务,最佳平衡 |
llama-3.1-70b-versatile |
70B | 128K | ⚡⚡⚡ | 复杂任务 |
llama-3.1-8b-instant |
8B | 128K | ⚡⚡⚡⚡ | 快速响应 |
其他模型
| 模型 ID | 参数量 | 上下文 | 特点 |
|---|---|---|---|
mixtral-8x7b-32768 |
47B | 32K | Mistral 混合专家 |
gemma2-9b-it |
9B | 8K | Google 开源 |
deepseek-r1-distill-llama-70b |
70B | 32K | 推理专家 |
🔢 配额和限制
API 配额
| 限制类型 | 免费层级 | 说明 |
|---|---|---|
| 每日请求数 | 14,400 requests | 所有模型共享 |
| 每分钟请求数 | 30 requests | 所有模型共享 |
| 每日 Tokens | 20,000-1,000,000 | 视模型而定 |
| 每分钟 Tokens | 6,000 tokens | 输入输出总和 |
| 最大上下文 | 128K tokens | Llama 3.x 系列 |
| 最大输出 | 8,192 tokens | 单次请求 |
⚠️ 重要限制
- 配额共享: 所有模型共享同一账户配额
- 速率限制: 超过限制返回 429 错误
- 每日重置: UTC 时间凌晨 00:00 重置
- 并发限制: 建议不超过 10 个并发请求
📖 API 使用示例
1. 基础对话
Python
from groq import Groq
client = Groq(api_key="YOUR_API_KEY")
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[
{"role": "system", "content": "你是一个有帮助的AI助手"},
{"role": "user", "content": "什么是机器学习?"}
]
)
print(response.choices[0].message.content)2. 流式输出
Python
from groq import Groq
client = Groq(api_key="YOUR_API_KEY")
stream = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[
{"role": "user", "content": "写一篇关于AI的文章"}
],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")3. 多轮对话
Python
from groq import Groq
client = Groq(api_key="YOUR_API_KEY")
messages = [
{"role": "system", "content": "你是一个Python编程助手"}
]
# 第一轮
messages.append({"role": "user", "content": "如何读取文件?"})
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=messages
)
messages.append({"role": "assistant", "content": response.choices[0].message.content})
# 第二轮(模型会记住上下文)
messages.append({"role": "user", "content": "那写入呢?"})
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=messages
)
print(response.choices[0].message.content)4. 调整生成参数
Python
from groq import Groq
client = Groq(api_key="YOUR_API_KEY")
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[
{"role": "user", "content": "写一首诗"}
],
temperature=0.9, # 提高创造性
max_tokens=1024, # 限制输出长度
top_p=0.95, # 核采样
frequency_penalty=0.5, # 降低重复
presence_penalty=0.5 # 增加话题多样性
)
print(response.choices[0].message.content)5. 使用 cURL
Bash
curl "https://api.groq.com/openai/v1/chat/completions" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "llama-3.3-70b-versatile",
"messages": [
{
"role": "user",
"content": "你好,介绍一下 Groq"
}
]
}'6. Node.js 示例
Bash
npm install groq-sdkJavaScript
const Groq = require("groq-sdk");
const groq = new Groq({
apiKey: "YOUR_API_KEY"
});
async function main() {
const chatCompletion = await groq.chat.completions.create({
messages: [
{ role: "user", content: "介绍一下 Groq 的 LPU 技术" }
],
model: "llama-3.3-70b-versatile",
});
console.log(chatCompletion.choices[0].message.content);
}
main();💡 最佳实践
✅ 推荐做法
-
选择合适的模型
# 快速任务 model = "llama-3.1-8b-instant" # 平衡性能 model = "llama-3.3-70b-versatile" # 数学/代码推理 model = "deepseek-r1-distill-llama-70b" -
实现错误处理和重试
import time from groq import Groq, RateLimitError client = Groq(api_key="YOUR_API_KEY") def call_with_retry(messages, max_retries=3): for i in range(max_retries): try: return client.chat.completions.create( model="llama-3.3-70b-versatile", messages=messages ) except RateLimitError: if i < max_retries - 1: wait_time = 2 ** i print(f"速率限制,等待 {wait_time} 秒...") time.sleep(wait_time) else: raise -
监控配额使用
import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def track_usage(response): usage = response.usage logger.info(f"Tokens使用: " f"输入={usage.prompt_tokens}, " f"输出={usage.completion_tokens}, " f"总计={usage.total_tokens}") return response -
使用流式输出优化体验
def stream_chat(prompt): stream = client.chat.completions.create( model="llama-3.3-70b-versatile", messages=[{"role": "user", "content": prompt}], stream=True ) full_response = "" for chunk in stream: if chunk.choices[0].delta.content: content = chunk.choices[0].delta.content print(content, end="", flush=True) full_response += content return full_response -
安全管理 API 密钥
import os from dotenv import load_dotenv # 使用环境变量 load_dotenv() api_key = os.getenv('GROQ_API_KEY') client = Groq(api_key=api_key)
🔧 常见问题
1. 429 错误:Rate Limit Exceeded
原因: 超过速率限制
解决:
Python
import time
from groq import RateLimitError
try:
response = client.chat.completions.create(...)
except RateLimitError as e:
print(f"速率限制: {e}")
print("等待后重试...")
time.sleep(60) # 等待1分钟
response = client.chat.completions.create(...)2. 401 错误:Invalid API Key
原因: API 密钥无效或过期
解决:
- 检查 API 密钥是否正确
- 在 Console 重新生成密钥
- 确保密钥没有多余的空格
3. 网络超时
解决:
Python
from groq import Groq
client = Groq(
api_key="YOUR_API_KEY",
timeout=60.0 # 设置60秒超时
)4. 如何查看剩余配额?
方法:
- 登录 https://console.groq.com
- 访问 “Usage” 页面
- 查看当前配额使用情况
📊 性能优化
1. 批量处理
Python
import asyncio
from groq import AsyncGroq
async def batch_process(questions):
client = AsyncGroq(api_key="YOUR_API_KEY")
tasks = []
for q in questions:
task = client.chat.completions.create(
model="llama-3.1-8b-instant",
messages=[{"role": "user", "content": q}]
)
tasks.append(task)
return await asyncio.gather(*tasks)
# 使用
questions = ["问题1", "问题2", "问题3"]
responses = asyncio.run(batch_process(questions))2. 缓存结果
Python
from functools import lru_cache
import hashlib
import json
def get_cache_key(messages):
return hashlib.md5(
json.dumps(messages, sort_keys=True).encode()
).hexdigest()
cache = {}
def cached_completion(messages):
key = get_cache_key(messages)
if key in cache:
print("使用缓存结果")
return cache[key]
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=messages
)
cache[key] = response
return response3. 选择合适的模型
Python
def select_model(task_complexity):
if task_complexity == "simple":
return "llama-3.1-8b-instant" # 最快
elif task_complexity == "medium":
return "llama-3.3-70b-versatile" # 平衡
elif task_complexity == "complex":
return "deepseek-r1-distill-llama-70b" # 推理📚 相关资源
官方文档
SDK 和工具
示例代码
🌟 实战案例
案例 1:实时聊天机器人
Python
import streamlit as st
from groq import Groq
client = Groq(api_key="YOUR_API_KEY")
st.title("Groq 超快聊天机器人")
if "messages" not in st.session_state:
st.session_state.messages = []
# 显示历史消息
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.write(message["content"])
# 用户输入
if prompt := st.chat_input("输入您的问题..."):
# 添加用户消息
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.write(prompt)
# 生成回复
with st.chat_message("assistant"):
stream = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=st.session_state.messages,
stream=True
)
response = st.write_stream(
(chunk.choices[0].delta.content for chunk in stream
if chunk.choices[0].delta.content)
)
# 添加助手消息
st.session_state.messages.append({"role": "assistant", "content": response})案例 2:代码助手
Python
from groq import Groq
client = Groq(api_key="YOUR_API_KEY")
def code_assistant(language, task):
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[
{
"role": "system",
"content": f"你是一个专业的{language}编程助手。"
f"提供清晰的代码示例和解释。"
},
{
"role": "user",
"content": task
}
],
temperature=0.2 # 降低温度以获得更确定的代码
)
return response.choices[0].message.content
# 使用
result = code_assistant("Python", "实现一个二分查找算法")
print(result)服务提供者: Groq
最后更新于