client.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import asyncio
  2. import os
  3. import sys
  4. sys.path.append(os.path.dirname(os.path.dirname(__file__)))
  5. import asyncio
  6. from grpclib.client import Channel
  7. from grpc_m.vector import vector_grpc, vector_pb2
  8. from db.docs import DocumentsRepository
  9. from db.user_oauth import test_add # 假设这里有必要的导入来获取open_id
  10. from config import logger,GRPC_VECTOR
  11. async def load_user_docs_async(open_id: str, file_path: list[str]):
  12. async with grpc.insecure_channel(GRPC_VECTOR) as channel:
  13. stub = vector_service_pb2_grpc.VectorServiceStub(channel)
  14. request = vector_service_pb2.LoadUserDocRequest(
  15. open_id=open_id,
  16. data=[vector_service_pb2.Document(path=file_path, id=str(open_id))]
  17. )
  18. response = await stub.LoadUserDoc(request)
  19. # 输出响应结果
  20. logger.info("Response: success = {}".format(response.success))
  21. return response
  22. async def run():
  23. # 创建gRPC通道和存根
  24. async with Channel('localhost',18600) as channel:
  25. stub = vector_grpc.VectorServiceStub(channel)
  26. # 准备gRPC请求并发送
  27. request = vector_pb2.SearchRequest(collection_name="some-uuid-1", query="价格多少")
  28. responses:vector_pb2.SearchResponses = await stub.SimilaritySearch(request)
  29. data = responses.data
  30. # 输出响应结果
  31. logger.info("Response: success = {}".format(data))
  32. for item in data:
  33. chunk_data = item.chunk
  34. metadata_dict = dict(item.metadata)
  35. score_value = item.score
  36. uuid_value = item.uuid
  37. print(f"Chunk: {chunk_data}")
  38. print(f"Metadata: {metadata_dict}")
  39. print(f"Score: {score_value}")
  40. print(f"UUID: {uuid_value}")
  41. if __name__ == '__main__':
  42. asyncio.run(run())