|
|
#!/usr/bin/env python3 |
|
|
""" |
|
|
mem0 验证脚本 - 测试 DashScope 1024 维度配置 |
|
|
""" |
|
|
|
|
|
import os |
|
|
import sys |
|
|
import asyncio |
|
|
|
|
|
# 设置环境变量 |
|
|
os.environ['OPENAI_API_BASE'] = 'https://dashscope.aliyuncs.com/compatible-mode/v1' |
|
|
os.environ['OPENAI_BASE_URL'] = 'https://dashscope.aliyuncs.com/compatible-mode/v1' |
|
|
os.environ['MEM0_DASHSCOPE_API_KEY'] = 'sk-4111c9dba5334510968f9ae72728944e' |
|
|
os.environ['OPENAI_API_KEY'] = 'sk-4111c9dba5334510968f9ae72728944e' |
|
|
|
|
|
# 添加路径 |
|
|
sys.path.insert(0, '/root/.openclaw/workspace/skills/mem0-integration') |
|
|
|
|
|
print("=" * 60) |
|
|
print("🔍 mem0 验证测试 - DashScope 1024 维度配置") |
|
|
print("=" * 60) |
|
|
|
|
|
# 测试 1: 检查环境变量 |
|
|
print("\n[1/4] 检查环境变量...") |
|
|
print(f" OPENAI_BASE_URL: {os.environ.get('OPENAI_BASE_URL')}") |
|
|
print(f" OPENAI_API_KEY: {os.environ.get('OPENAI_API_KEY')[:10]}...") |
|
|
print(f" ✅ 环境变量已设置") |
|
|
|
|
|
# 测试 2: 导入 mem0_client |
|
|
print("\n[2/4] 导入 mem0_client 模块...") |
|
|
try: |
|
|
from mem0_client import Mem0Client |
|
|
print(" ✅ 模块导入成功") |
|
|
except Exception as e: |
|
|
print(f" ❌ 模块导入失败:{e}") |
|
|
sys.exit(1) |
|
|
|
|
|
# 测试 3: 初始化客户端 |
|
|
print("\n[3/4] 初始化 Mem0Client...") |
|
|
try: |
|
|
client = Mem0Client() |
|
|
print(f" ✅ 客户端初始化成功") |
|
|
print(f" - local_memory: {client.local_memory is not None}") |
|
|
print(f" - qdrant_host: {client.config['qdrant']['host']}") |
|
|
print(f" - embedder_model: {client.config['embedder']['config'].get('model')}") |
|
|
print(f" - embedding_dims: {client.config['embedder']['config'].get('dimensions')}") |
|
|
except Exception as e: |
|
|
print(f" ❌ 初始化失败:{e}") |
|
|
import traceback |
|
|
traceback.print_exc() |
|
|
sys.exit(1) |
|
|
|
|
|
# 测试 4: 测试向量生成(验证 1024 维度) |
|
|
print("\n[4/4] 测试向量生成(验证 1024 维度)...") |
|
|
async def test_embedding(): |
|
|
try: |
|
|
# 使用 DashScope API 直接测试 |
|
|
import httpx |
|
|
|
|
|
api_key = os.environ.get('OPENAI_API_KEY') |
|
|
api_base = os.environ.get('OPENAI_BASE_URL') |
|
|
|
|
|
payload = { |
|
|
"model": "text-embedding-v3", |
|
|
"input": "测试文本 - 验证 1024 维度配置", |
|
|
"dimensions": 1024 |
|
|
} |
|
|
|
|
|
headers = { |
|
|
"Authorization": f"Bearer {api_key}", |
|
|
"Content-Type": "application/json" |
|
|
} |
|
|
|
|
|
async with httpx.AsyncClient(timeout=30.0) as http: |
|
|
response = await http.post( |
|
|
f"{api_base}/embeddings", |
|
|
json=payload, |
|
|
headers=headers |
|
|
) |
|
|
|
|
|
if response.status_code == 200: |
|
|
data = response.json() |
|
|
embedding = data['data'][0]['embedding'] |
|
|
print(f" ✅ 向量生成成功") |
|
|
print(f" - 维度:{len(embedding)}") |
|
|
print(f" - 状态码:{response.status_code}") |
|
|
|
|
|
if len(embedding) == 1024: |
|
|
print(f" 🎉 维度验证通过!(1024)") |
|
|
return True |
|
|
else: |
|
|
print(f" ⚠️ 维度不匹配!期望 1024,实际 {len(embedding)}") |
|
|
return False |
|
|
else: |
|
|
print(f" ❌ API 请求失败:{response.status_code}") |
|
|
print(f" 响应:{response.text[:200]}") |
|
|
return False |
|
|
|
|
|
except Exception as e: |
|
|
print(f" ❌ 测试失败:{e}") |
|
|
import traceback |
|
|
traceback.print_exc() |
|
|
return False |
|
|
|
|
|
# 运行异步测试 |
|
|
result = asyncio.run(test_embedding()) |
|
|
|
|
|
print("\n" + "=" * 60) |
|
|
if result: |
|
|
print("✅ 所有测试通过!mem0 配置正确") |
|
|
sys.exit(0) |
|
|
else: |
|
|
print("⚠️ 部分测试失败,请检查配置") |
|
|
sys.exit(1)
|
|
|
|