Azure WebApp中ChromaDB Python客户端连接失败问题求助
问题排查与解决方法
1. 核心参数名错误
你的代码里使用了chroma_client_auth_credentials和chroma_client_auth_provider,但报错提示找不到chroma_server_authn_credentials——这是参数名不匹配导致的。ChromaDB HTTP客户端的认证参数需要使用服务端侧的配置键名,正确的参数应该是:
chroma_server_authn_provider(替代你用的chroma_client_auth_provider)chroma_server_authn_credentials(替代你用的chroma_client_auth_credentials)
修正后的连接代码:
import os import chromadb from chromadb.config import Settings # 从Azure环境变量读取配置参数 CHROMA_SERVER_AUTHN_PROVIDER = os.getenv("CHROMA_SERVER_AUTHN_PROVIDER") bearer_token = os.getenv("CHROMA_SERVER_AUTHN_CREDENTIALS") url = os.getenv("CHROMA_SERVER_HOST") # 即你的https://....azurewebsites.net client = chromadb.HttpClient( host=url, ssl=True, # HTTPS地址必须启用SSL settings=Settings( chroma_server_authn_provider=CHROMA_SERVER_AUTHN_PROVIDER, chroma_server_authn_credentials=bearer_token ) )
2. 验证Azure环境变量有效性
- 确认Azure WebApp环境变量中,
CHROMA_SERVER_AUTHN_CREDENTIALS确实设置了无空格、无换行的有效Bearer Token - 建议在代码中添加打印语句,验证参数是否正确读取:
print("读取到的Token:", os.getenv("CHROMA_SERVER_AUTHN_CREDENTIALS")) print("认证提供者:", os.getenv("CHROMA_SERVER_AUTHN_PROVIDER"))
3. 替代连接方式:直接传递请求头
如果参数配置仍有问题,可以跳过ChromaDB内部认证逻辑,直接在HttpClient中自定义请求头:
import os import chromadb url = "https://....azurewebsites.net" bearer_token = os.getenv("CHROMA_SERVER_AUTHN_CREDENTIALS") client = chromadb.HttpClient( host=url, ssl=True, headers={"Authorization": f"Bearer {bearer_token}"} )
额外注意事项
- 因为你的连接地址是HTTPS,必须显式设置
ssl=True,否则会出现连接失败 - 确保Azure WebApp上的ChromaDB服务端已正确配置认证,比如
CHROMA_SERVER_AUTHN_PROVIDER设置为bearer
内容的提问来源于stack exchange,提问作者Lefloch Had
相关产品推荐
相关产品推荐

