from urllib.parse import urlparse, urlunparse from sqlalchemy import create_engine, MetaData, Table, select, update, and_ # backend/llm_service.py import dashscope from http import HTTPStatus from .config import settings # 初始化 Dashscope dashscope.api_key = settings.DASHSCOPE_API_KEY def get_embeddings(texts: list[str]): """调用通义千问 embedding 模型""" resp = dashscope.TextEmbedding.call( model=dashscope.TextEmbedding.Models.text_embedding_v3, # 或其他模型 input=texts ) if resp.status_code == HTTPStatus.OK: return [item['embedding'] for item in resp.output['embeddings']] else: print(f"Embedding Error: {resp}") return [] def normalize_url(url: str) -> str: if not url: return "" url = url.strip() parsed = urlparse(url) scheme = parsed.scheme.lower() netloc = parsed.netloc.lower() path = parsed.path.rstrip('/') if not path: path = "" return urlunparse((scheme, netloc, path, parsed.params, parsed.query, "")) def make_response(code: int, msg: str = "Success", data: any = None): """ 统一响应格式 :param code: 1 成功, 0 失败, 其他自定义 :param msg: 提示信息 :param data: 返回数据 """ return {"code": code, "msg": msg, "data": data}