test_upload.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/usr/bin/env python3
  2. """
  3. 测试知识上传脚本
  4. """
  5. import sys
  6. import os
  7. import uuid
  8. import time
  9. from datetime import datetime, timezone
  10. sys.path.insert(0, '/root/Agent')
  11. # 设置环境变量
  12. os.environ['KNOWHUB_DB'] = 'gp-t4n72471pkmt4b9q7o-master.gpdbmaster.singapore.rds.aliyuncs.com'
  13. os.environ['KNOWHUB_PORT'] = '5432'
  14. os.environ['KNOWHUB_USER'] = 'aiddit_aigc'
  15. os.environ['KNOWHUB_PASSWORD'] = '%a&&yqNxg^V1$toJ*WOa^-b^X=QJ'
  16. os.environ['KNOWHUB_DB_NAME'] = 'knowhub'
  17. from knowhub.knowhub_db.pg_store import PostgreSQLStore
  18. from knowhub.embeddings import get_embedding
  19. # 测试知识数据
  20. knowledge_data = {
  21. 'task': '接口测试验证条目',
  22. 'content': '这是一条用于验证 upload 接口是否可用的测试知识,可以删除。',
  23. 'types': ['experience'],
  24. 'tags': {'source': 'api_test'},
  25. 'score': 1
  26. }
  27. print('正在连接数据库...')
  28. store = PostgreSQLStore()
  29. # 生成 ID
  30. now = datetime.now(timezone.utc)
  31. knowledge_id = f'knowledge-{now.strftime("%Y%m%d")}-{uuid.uuid4().hex[:8]}'
  32. message_id = f'msg-{uuid.uuid4().hex[:12]}'
  33. # 生成 embedding
  34. print('正在生成 embedding...')
  35. task_embedding = get_embedding(knowledge_data['task'])
  36. content_embedding = get_embedding(knowledge_data['content'])
  37. # 构建知识记录
  38. knowledge = {
  39. 'id': knowledge_id,
  40. 'message_id': message_id,
  41. 'task': knowledge_data['task'],
  42. 'content': knowledge_data['content'],
  43. 'types': knowledge_data['types'],
  44. 'tags': knowledge_data.get('tags', {}),
  45. 'tag_keys': list(knowledge_data.get('tags', {}).keys()),
  46. 'scopes': ['org:cybertogether'],
  47. 'owner': 'system',
  48. 'source': {'category': 'execution'},
  49. 'eval': {'score': knowledge_data.get('score', 3)},
  50. 'task_embedding': task_embedding,
  51. 'content_embedding': content_embedding,
  52. 'created_at': int(time.time()),
  53. 'updated_at': int(time.time()),
  54. 'status': 'approved',
  55. }
  56. print(f'正在插入知识条目...')
  57. store.insert(knowledge)
  58. store.close()
  59. print(f'✅ 成功插入知识条目!')
  60. print(f' ID: {knowledge_id}')
  61. print(f' Task: {knowledge_data["task"]}')
  62. print(f' Types: {knowledge_data["types"]}')