import os import re from typing import List import dashscope def rewrite_query(query: str, n_max_query: int = 5) -> List[str]: raw_prompt = _build_raw_prompt(query) try: dashscope.base_http_api_url = 'https://poc-dashscope.aliyuncs.com/api/v1' response_query = dashscope.Generation.call( api_key='sk-6bddfc116de744c3aa1d66893cc87b20', model='pre-qwen-rag-rewrite-decomp-chat', prompt=raw_prompt, use_raw_prompt=True ) queries = _parse_output(response_query.output.text) return queries[:n_max_query] except Exception as e: raise ValueError(f'Call dashscope failed: {str(e)}') def _build_raw_prompt(query: str) -> str: raw_prompt = '<|im_start|>system\n# Tool\n[\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"search\",\n \"description\": \"Utilize the web search engine to retrieve relevant information based on multiple queries\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"queries\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"A search query\"\n },\n \"description\": \"The list of search queries\"\n }\n },\n \"required\": [\n \"queries\"\n ]\n }\n }\n }\n]\n<|im_end|>\n<|im_start|>user\n'+query+'<|im_end|>\n<|im_start|>assistant\n# Tool Call\n' return raw_prompt def _parse_output(output: str) -> List[str]: results = re.findall('\'(.*?)\'', output) return results if __name__ == '__main__': print(rewrite_query('深度分析kimi chat的发展现状'))