import os
import json
from typing import List
import httpx
import requests


def get_embeddings(embedding_texts: List[str]):
        base_url=os.getenv("OPENAI_API_EMBEDDING_BASE","http://172.18.30.122:40060/v1")
        embedding_base_url = os.path.join(base_url, "embeddings")
        with httpx.Client(timeout=60) as client:
            response = client.post(
            embedding_base_url,
            json={"model": "bge-m3", "input": embedding_texts},
            headers={"Authorization": os.getenv("OPENAI_API_KEY","EMPTY")},
        )
            embedding_list = response.json()["data"][0]["embedding"]
        return embedding_list
# 1. 组装请求体（与 SearchRequest 一一对应）


payload = {  # 若不提供 query，可改为传 query_vector
    "top_k": 3,
    "database_name": "XIAN",
    "collection_name": "b9d47d5a6d66cbe2cd44a8ea4ad021fc",
    "query_vector": get_embeddings(["和尚"])          # 如果本地已算好向量，可直接把 list[float] 写进来
}

# 2. 发送 POST 请求
url = "http://172.18.30.122:9079/search_3D"
headers = {"Content-Type": "application/json"}

resp = requests.post(url, data=json.dumps(payload), headers=headers, timeout=30)

# 3. 处理返回
if resp.status_code == 200:
    data = resp.json()
    if data.get("code") == 200:
        print("检索成功：")
        for item in data.get("data", []):
            print("score:", item["score"])
            print("text :", item["text"][:200], "...")
    else:
        print("业务逻辑异常：", data.get("message"))
else:
    print("HTTP 异常：", resp.status_code, resp.text)