2 个配置项跑通 MemGPT Groq 接入:完整修复“密钥缺失”与流式报错指南
【免费下载链接】MemGPTPlatform for stateful agents: AI with advanced memory that can learn and self-improve over time.项目地址: https://gitcode.com/GitHub_Trending/me/MemGPT
MemGPT(Letta)是一个让 AI Agent 拥有长期记忆并能持续自我改进的有状态智能体平台。我们在给它接入 Groq 高速推理服务时,最常见的两个报错是No API key provided(密钥缺失)和流式调用时的NotImplementedError。这两个问题只需要 2 个配置项就能解决:配置 Groq API key,并把流式输出显式关闭。下面先给可用配置,再逐条解释根因。
跑通的最小配置:2 个配置项一张表看懂
下面这张表就是本次排障的全部答案,先照着配,后文再讲为什么:
| 配置项 | 应设置的值 | 白话解释 |
|---|---|---|
groq_api_key(或环境变量GROQ_API_KEY) | 你的真实密钥,形如gsk_... | Groq 服务的身份凭证,没有它请求直接被拒 |
stream | False | 关闭流式输出,因为 Groq 客户端根本没实现流式 |
以下代码用于创建模型调用参数对象,LLMConfig(letta/schemas/llm_config.py)就是承载“用哪个模型、连哪个端点、是否流式”等参数的配置载体:
from letta.schemas.llm_config import LLMConfig llm_config = LLMConfig( model="llama3-70b-8192", model_endpoint="https://api.groq.com/openai/v1", # Groq 的 API 基础地址 stream=False, # 必须显式关闭流式 )Groq API key 配置:两条查找路径与配置写法
No API key provided的根因在 letta/llm_api/groq_client.py:GroqClient发起请求时按固定优先级取密钥,两条路径都为空才会报这个错:
api_key = model_settings.groq_api_key or os.environ.get("GROQ_API_KEY")- 项目配置:
model_settings.groq_api_key,即 letta/settings.py 中model_settings的groq_api_key字段(model_settings是 MemGPT 的全局配置对象)。 - 环境变量:
GROQ_API_KEY,未走第 1 条时回退到这里。
优先用环境变量解决。按顺序执行(均为你本地的 shell 操作):
# 第 1 步:确认当前 shell 里有没有 key echo $GROQ_API_KEY # 第 2 步:若输出为空,设置密钥(当前终端会话内立即生效) export GROQ_API_KEY="gsk_你的真实密钥"密钥去 Groq 官方控制台创建,生成后立刻保存,页面刷新后不会再次显示。
把密钥写入 shell 配置避免重启丢失
export只对当前会话有效,新开的终端会再次报密钥缺失。需要持久化时,执行下面两行,然后重开一个终端复跑echo $GROQ_API_KEY确认:
echo 'export GROQ_API_KEY="gsk_你的真实密钥"' >> ~/.bashrc source ~/.bashrc关闭流式输出的正确写法:NotImplementedError 修复
⚠️ 这个报错不是偶发故障,而是实现上的硬限制。letta/llm_api/groq_client.py 中的stream_async方法被写死为直接抛异常:
async def stream_async(self, request_data: dict, llm_config: LLMConfig): raise NotImplementedError("Streaming not supported for Groq.")因果链很清楚:只要请求走到流式分支,这个异常必然抛出,重试多少次都一样。所以修复动作只有一个——不让请求进入流式分支。
将LLMConfig的stream字段显式设为False(写法见第一节代码)。注意“不写”不等于“关掉”:其他客户端默认可能带流式行为,Groq 必须显式禁用。如果你用的是 Agent 级推理配置,同样在对应配置里把stream改为False。
llama3-70b-8192 接入:Groq 端点与模型选择
端点必须固定为https://api.groq.com/openai/v1——这是 letta/schemas/providers/groq.py 中GroqProvider(Groq 的提供商配置类)的默认base_url,与 OpenAI 兼容路径保持一致。
模型按场景二选一:
| 模型 | 上下文窗口 | 适合场景 |
|---|---|---|
llama3-70b-8192 | 8K | 长文本处理、RAG 问答 |
mixtral-8x7b-32768 | 32K | 多轮对话、快速响应 |
把上表模型名填进LLMConfig的model字段即可,两个模型走的都是同一个端点和同一套密钥。
3 条命令验证清单:确认 Groq 接入已跑通
按编号逐条执行,任一步不通过就回到对应小节,不要跳步:
- 密钥检查:
echo $GROQ_API_KEY,预期输出以gsk_开头的密钥串;输出为空则回到“Groq API key 配置”一节。 - 端点直连测试:以下命令绕过 MemGPT 直接打 Groq 接口,用来区分问题出在密钥/网络还是出在项目配置:
curl -s https://api.groq.com/openai/v1/chat/completions \ -H "Authorization: Bearer $GROQ_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"llama3-70b-8192","messages":[{"role":"user","content":"Hello"}]}'预期输出:一段 JSON,其中包含"choices"、"message"与"content"字段。若返回 401,说明密钥无效或环境变量未生效。 3.项目内校验:参照 tests/test_providers.py 的测试模式确认配置合法:
provider = GroqProvider(api_key="有效密钥", model="llama3-70b-8192") provider.validate() # 预期返回 True✅ 完成标志:重跑第 2 步的 curl 命令,只要响应 JSON 中出现"message"与"content"字段,且provider.validate()返回True,即代表 MemGPT 到 Groq 的链路已完全打通,可以正式在 Agent 中使用。
【免费下载链接】MemGPTPlatform for stateful agents: AI with advanced memory that can learn and self-improve over time.项目地址: https://gitcode.com/GitHub_Trending/me/MemGPT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考