diff --git a/erniebot-agent/cookbook/langchain_function_agent_with_retrieval.ipynb b/erniebot-agent/cookbook/langchain_function_agent_with_retrieval.ipynb index dbd3c0138..7a22899db 100644 --- a/erniebot-agent/cookbook/langchain_function_agent_with_retrieval.ipynb +++ b/erniebot-agent/cookbook/langchain_function_agent_with_retrieval.ipynb @@ -93,16 +93,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "--2023-12-29 03:52:23-- https://paddlenlp.bj.bcebos.com/datasets/examples/construction_regulations.tar\n", + "--2024-01-02 02:23:31-- https://paddlenlp.bj.bcebos.com/datasets/examples/construction_regulations.tar\n", "Resolving paddlenlp.bj.bcebos.com (paddlenlp.bj.bcebos.com)... 36.110.192.178, 2409:8c04:1001:1002:0:ff:b001:368a\n", "Connecting to paddlenlp.bj.bcebos.com (paddlenlp.bj.bcebos.com)|36.110.192.178|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 1239040 (1.2M) [application/x-tar]\n", "Saving to: ‘construction_regulations.tar’\n", "\n", - "construction_regula 100%[===================>] 1.18M 4.87MB/s in 0.2s \n", + "construction_regula 100%[===================>] 1.18M 4.92MB/s in 0.2s \n", "\n", - "2023-12-29 03:52:23 (4.87 MB/s) - ‘construction_regulations.tar’ saved [1239040/1239040]\n", + "2024-01-02 02:23:32 (4.92 MB/s) - ‘construction_regulations.tar’ saved [1239040/1239040]\n", "\n", "construction_regulations/\n", "construction_regulations/城市管理执法办法.pdf\n", @@ -120,6 +120,29 @@ "! tar xvf construction_regulations.tar" ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3.2 创建embedding\n", + "创建一个ErnieEmbeddings对象,用于生成文档的嵌入向量。aistudio_access_token是访问AI Studio的令牌,chunk_size是用于嵌入的文档块的数量。\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [ + "aistudio_access_token = os.environ.get(\"EB_AGENT_ACCESS_TOKEN\", \"\")\n", + "embeddings = ErnieEmbeddings(aistudio_access_token=aistudio_access_token, chunk_size=16)" + ] + }, { "attachments": {}, "cell_type": "markdown", @@ -131,7 +154,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -142,14 +165,18 @@ "\n", " def search(self, query: str, top_k: int = 10, **kwargs):\n", " # 定义一个搜索方法,接受一个查询字符串 'query' 和一个整数 'top_k',默认为 10\n", - " docs = self.db.similarity_search_with_score(query, top_k)\n", - " # 调用数据库的 similarity_search_with_score 方法来获取与查询最相关的文档\n", + " docs = self.db.similarity_search(query, top_k)\n", + " # 调用数据库的 similarity_search 方法来获取与查询最相关的文档\n", + " para_result = embeddings.embed_documents([i.page_content for i in docs])\n", + " # 对获取的文档内容进行嵌入(embedding),以便进行相似性比较\n", + " query_result = embeddings.embed_query(query)\n", + " # 对查询字符串也进行嵌入\n", + " similarities = cosine_similarity([query_result], para_result).reshape((-1,))\n", + " # 计算查询嵌入和文档嵌入之间的余弦相似度\n", " retrieval_results = []\n", - " for item in docs:\n", - " doc = item[0]\n", - " score = item[1]\n", + " for index, doc in enumerate(docs):\n", " retrieval_results.append(\n", - " {\"content\": doc.page_content, \"score\": float(score), \"title\": doc.metadata[\"source\"]}\n", + " {\"content\": doc.page_content, \"score\": similarities[index], \"title\": doc.metadata[\"source\"]}\n", " )\n", " # 遍历每个文档,将内容、相似度得分和来源标题作为字典添加到结果列表中\n", " return retrieval_results # 返回包含搜索结果的列表" @@ -163,17 +190,7 @@ "# 4.FunctionAgentWithRetrieval\n", "## 4.1 建索引库\n", "\n", - "这段代码主要功能是用于创建或加载一个FAISS索引来进行文档相似度匹配。首先,创建一个ErnieEmbeddings对象,用于生成文档的嵌入向量。aistudio_access_token是访问AI Studio的令牌,chunk_size是用于嵌入的文档块的数量。" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "aistudio_access_token = os.environ.get(\"EB_AGENT_ACCESS_TOKEN\", \"\")\n", - "embeddings = ErnieEmbeddings(aistudio_access_token=aistudio_access_token, chunk_size=16)" + "这段代码主要功能是用于创建或加载一个FAISS索引来进行文档相似度匹配。" ] }, { @@ -181,7 +198,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "接下来利用ErnieEmbeddings来抽取向量构建索引。\n", + "利用ErnieEmbeddings创建的embedding来抽取向量构建索引。\n", "+ 如果FAISS索引文件已经存在,就使用FAISS.load_local方法加载这个索引,这个索引文件的名字就是定义的faiss_name。\n", "+ 如果FAISS索引不存在,则需要建索引。\n", " + 第一步,使用PyPDFDirectoryLoader来从\"construction_regulations\"这个文件夹中加载PDF文档。\n", @@ -199,20 +216,19 @@ "output_type": "stream", "text": [ "Created a chunk of size 408, which is longer than the specified 320\n", - "Retrying requests: Attempt 1 ended with: \n", - "Retrying requests: Attempt 1 ended with: \n", - "Retrying requests: Attempt 1 ended with: \n", - "Retrying requests: Attempt 1 ended with: \n", - "Retrying requests: Attempt 1 ended with: \n", - "Retrying requests: Attempt 1 ended with: \n", - "Retrying requests: Attempt 1 ended with: \n", - "Retrying requests: Attempt 1 ended with: \n", - "Retrying requests: Attempt 1 ended with: \n" + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n" ] } ], "source": [ - "embeddings = ErnieEmbeddings(aistudio_access_token=aistudio_access_token, chunk_size=16)\n", "faiss_name = \"faiss_index\"\n", "if os.path.exists(faiss_name):\n", " db = FAISS.load_local(faiss_name, embeddings)\n", @@ -241,29 +257,37 @@ "execution_count": 6, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "[{'content': '第十条 城市管理执法主管部门依法相对集中行使行政处罚权的, 可以实施法律法规规定的与行政处罚权相关的行政强制措施。',\n", - " 'score': 0.6332176923751831,\n", + " 'score': 0.6833730421296541,\n", " 'title': 'construction_regulations/城市管理执法办法.pdf'},\n", " {'content': '第六条 城市管理执法主管部门应当加强城市管理法律法规规章的宣传普及工作,增强全民守法意识,共同维护城市管理秩序。\\n'\n", " '\\n'\n", " ' \\n'\n", " '\\n'\n", " '第七条 城市管理执法主管部门应当积极为公众监督城市管理执法活动提供条件。',\n", - " 'score': 0.7080249190330505,\n", + " 'score': 0.645987793263916,\n", " 'title': 'construction_regulations/城市管理执法办法.pdf'},\n", " {'content': '其他违反法律法规和本办法规定的。 第四十条 '\n", " '非城市管理执法人员着城市管理执法制式服装的,城市管理执法主管部门应当予以纠正,依法追究法律责任。',\n", - " 'score': 0.7422306537628174,\n", + " 'score': 0.628888526926951,\n", " 'title': 'construction_regulations/城市管理执法办法.pdf'},\n", " {'content': '第三章 执法主体 第十三条 城市管理执法主管部门按照权责清晰、事权统一、精简效能的原则设置执法队伍。 第十四条 '\n", " '直辖市、 设区的市城市管理执法推行市级执法或者区级执法。 '\n", " '直辖市、设区的市的城市管理执法事项,市辖区人民政府城市管理执法主管部门能够承担的,可以实行区级执法。 直辖市、 '\n", " '设区的市人民政府城市管理执法主管部门可以承担跨区域和重大复杂违法案件的查处。',\n", - " 'score': 0.7908724546432495,\n", + " 'score': 0.6045487776924248,\n", " 'title': 'construction_regulations/城市管理执法办法.pdf'},\n", " {'content': '第五章 执法规范 第二十五条 '\n", " '城市管理执法主管部门依照法定程序开展执法活动,应当保障当事人依法享有的陈述、申辩、听证等权利。 第二十六条 '\n", @@ -272,7 +296,7 @@ " ' \\n'\n", " '\\n'\n", " '对违法行为轻微的,可以采取教育、劝诫、疏导等方式予以纠正。',\n", - " 'score': 0.8290374875068665,\n", + " 'score': 0.5855412211996395,\n", " 'title': 'construction_regulations/城市管理执法办法.pdf'},\n", " {'content': '住房和城乡建设部规章 \\n'\n", " ' X住房和城乡建设部发布 \\n'\n", @@ -283,7 +307,7 @@ " ' \\n'\n", " '\\n'\n", " '第十二条 城市管理执法主管部门集中行使原由其他部门行使的行政处罚权的,应当与其他部门明确职责权限和工作机制。',\n", - " 'score': 0.844007134437561,\n", + " 'score': 0.5779289002003206,\n", " 'title': 'construction_regulations/城市管理执法办法.pdf'},\n", " {'content': '住房和城乡建设部规章 \\n'\n", " ' X住房和城乡建设部发布 \\n'\n", @@ -303,12 +327,12 @@ " ' \\n'\n", " '\\n'\n", " '第五条 城市管理执法主管部门应当推动建立城市管理协调机制,协调有关部门做好城市管理执法工作。',\n", - " 'score': 0.8475480079650879,\n", + " 'score': 0.5762151842611781,\n", " 'title': 'construction_regulations/城市管理执法办法.pdf'},\n", " {'content': '第二十九条 城市管理执法主管部门对查封、扣押的物品,应当妥善保管,不得使用、截留、损毁或者擅自处置。\\n'\n", " '\\n'\n", " '查封、扣押的物品属非法物品的,移送有关部门处理。',\n", - " 'score': 0.8492105007171631,\n", + " 'score': 0.5753635808026318,\n", " 'title': 'construction_regulations/城市管理执法办法.pdf'},\n", " {'content': '住房和城乡建设部规章 \\n'\n", " ' X住房和城乡建设部发布 \\n'\n", @@ -323,7 +347,7 @@ " '第三十七条 城市管理执法主管部门在执法活动中发现依法应当由其他部门查处的违法行为, 应当及时告知或者移送有关部门。 \\n'\n", " '\\n'\n", " '第七章 执法监督',\n", - " 'score': 0.8536367416381836,\n", + " 'score': 0.5731701893090992,\n", " 'title': 'construction_regulations/城市管理执法办法.pdf'},\n", " {'content': '住房和城乡建设部规章 \\n'\n", " ' X住房和城乡建设部发布 \\n'\n", @@ -332,7 +356,7 @@ " '维护城市管理秩序, 保护公民、 法人和其他组织的合法权益,根据行政处罚法、行政强制法等法律法规的规定,制定本办法。 第二条 '\n", " '城市、 县人民政府所在地镇建成区内的城市管理执法活动以及执法监督活动,适用本办法。 本办法所称城市管理执法, '\n", " '是指城市管理执法主管部门在城市管理领域根据法律法规规章规定履行行政处罚、 行政强制等行政执法职责的行为。',\n", - " 'score': 0.8555314540863037,\n", + " 'score': 0.5722312939985383,\n", " 'title': 'construction_regulations/城市管理执法办法.pdf'}]\n" ] } @@ -366,10 +390,10 @@ "# 创建一个WholeMemory实例。这是一个用于存储对话历史和上下文信息的类,有助于模型理解和持续对话。\n", "memory = WholeMemory()\n", "# 调用一个文本转语音的工具。\n", - "tts_tool = RemoteToolkit.from_aistudio(\"texttospeech\").get_tools()[0]\n", + "tts_tool = RemoteToolkit.from_aistudio(\"texttospeech\").get_tools()\n", "# 创建一个FunctionAgentWithRetrieval实例。这个代理将使用上面创建的ERNIEBot模型、WholeMemory和faiss_search,同时传入了一个名为tts_tool的工具。\n", "agent = FunctionAgentWithRetrieval(\n", - " llm=llm, tools=[tts_tool], memory=memory, knowledge_base=faiss_search, threshold=0.9\n", + " llm=llm, tools=tts_tool, memory=memory, knowledge_base=faiss_search, threshold=0.5\n", ")" ] }, @@ -378,12 +402,20 @@ "execution_count": 8, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "{'role': 'user', 'content': '城乡建设部规章中,城市管理执法第三章,第十三条是什么?'}\n", - "{'role': 'assistant', 'content': '城市管理执法第三章第十三条是关于执法主体设置的原则。它规定城市管理执法主管部门应按照权责清晰、事权统一、精简效能的原则设置执法队伍。\\n\\n具体来说,这一规定强调了执法队伍设置的合理性,要求在权责划分上要明确清晰,确保每个部门和人员都能明确自己的职责范围。同时,强调了事权的统一性,即各级城市管理执法主管部门应当有统一的管理标准和执法程序,避免出现执法不公或混乱的情况。最后,要求执法队伍的设置要精简高效,避免机构冗余和资源的浪费,确保执法的高效性和及时性。\\n\\n这一规定为城市管理执法主管部门在设置和管理执法队伍时提供了指导原则,有助于提升城市管理的规范性和效率,维护城市环境的秩序和稳定。如需更多关于《城乡建设部规章》的内容,可以登陆国务院有关部委(局、集团)官方网站阅读完整的法律法规原文。', 'function_call': None, 'plugin_info': None, 'search_info': None}\n" + "{'role': 'user', 'content': '检索结果:\\n\\n 第1个段落: 住房和城乡建设部规章 \\n X住房和城乡建设部发布 \\n-\\n\\n 第2个段落: 住房和城乡建设部规章 \\n X住房和城乡建设部发布 \\n-\\n\\n 第3个段落: 第十条 城市管理执法主管部门依法相对集中行使行政处罚权的, 可以实施法律法规规定的与行政处罚权相关的行政强制措施。\\n\\n检索语句: 城乡建设部规章中,城市管理执法第三章,第十三条是什么?\\n请根据以上检索结果回答检索语句的问题'}\n", + "{'role': 'assistant', 'content': '根据提供的检索结果,没有找到与“城乡建设部规章中,城市管理执法第三章,第十三条是什么?”相关的具体信息。检索结果中只提到了住房和城乡建设部的规章和一些相关的法律条款,但没有提及具体的第三章第十三条内容。因此,无法提供该条款的具体内容。', 'function_call': None, 'plugin_info': None, 'search_info': {'results': [{'index': 1, 'url': '', 'title': 'construction_regulations/市政公用设施抗灾设防管理规定.pdf'}, {'index': 2, 'url': '', 'title': 'construction_regulations/市政公用设施抗灾设防管理规定.pdf'}, {'index': 3, 'url': '', 'title': 'construction_regulations/城市管理执法办法.pdf'}]}}\n" ] } ], @@ -391,7 +423,7 @@ "# 定义一个查询字符串,这个查询是关于\"城乡建设部规章中,城市管理执法第三章,第十三条\"的内容。\n", "query = \"城乡建设部规章中,城市管理执法第三章,第十三条是什么?\"\n", "# 使用agent的async_run方法来异步执行查询。由于这是异步操作,因此需要使用'await'关键字。\n", - "response = await agent._run(query)\n", + "response = await agent.run(query)\n", "messages = response.chat_history\n", "for item in messages:\n", " print(item.to_dict())" @@ -408,23 +440,31 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 9, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Retrying requests: Attempt 1 ended with: \n", + "Retrying requests: Attempt 1 ended with: \n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "{'role': 'user', 'content': '把上一轮的检索内容转换为语音'}\n", - "{'role': 'assistant', 'content': '', 'function_call': {'name': 'texttospeech/v1.6/tts', 'thoughts': '用户需要将上一轮的检索内容转换为语音。', 'arguments': '{\"tex\":\"城市管理执法主管部门应当按照权责清晰、事权统一、精简效能的原则设置执法队伍。\"}'}, 'plugin_info': None, 'search_info': None}\n", - "{'role': 'function', 'name': 'texttospeech/v1.6/tts', 'content': '{\"audio\": \"file-local-b603cbd6-a47d-11ee-9fbb-fa280016e4f3\", \"prompt\": \"参考工具说明中对各个结果字段的描述,提取工具调用结果中的信息,生成一段通顺的文本满足用户的需求。请务必确保每个符合\\'file-\\'格式的字段只出现一次,无需将其转换为链接,也无需添加任何HTML、Markdown或其他格式化元素。\"}'}\n", - "{'role': 'assistant', 'content': '根据您的要求,我为您检索到的第十三条规定已转换为语音。您可以通过点击以下链接来听取:file-local-b603cbd6-a47d-11ee-9fbb-fa280016e4f3。如果您需要再次听取或使用其他功能,请随时告诉我。', 'function_call': None, 'plugin_info': None, 'search_info': None}\n" + "{'role': 'user', 'content': '把上一轮的检索结果为语音'}\n", + "{'role': 'assistant', 'content': '', 'function_call': {'name': 'texttospeech/v1.6/tts', 'thoughts': '用户希望将检索结果转化为语音。我需要调用TTS工具将文本转化为语音。', 'arguments': '{\"tex\":\"检索结果: \\\\n\\\\n 第1个段落: 住房和城乡建设部规章 \\\\n X住房和城乡建设部发布 \\\\n- \\\\n\\\\n 第2个段落: 住房和城乡建设部规章 \\\\n X住房和城乡建设部发布 \\\\n- \\\\n\\\\n 第3个段落: 第十条 城市管理执法主管部门依法相对集中行使行政处罚权的, 可以实施法律法规规定的与行政处罚权相关的行政强制措施。\"}'}, 'plugin_info': None, 'search_info': None}\n", + "{'role': 'function', 'name': 'texttospeech/v1.6/tts', 'content': '{\"audio\": \"file-local-237b5cf0-a916-11ee-a15f-fa280016e4f3\", \"prompt\": \"参考工具说明中对各个结果字段的描述,提取工具调用结果中的信息,生成一段通顺的文本满足用户的需求。请务必确保每个符合\\'file-\\'格式的字段只出现一次,无需将其转换为链接,也无需添加任何HTML、Markdown或其他格式化元素。\"}'}\n", + "{'role': 'assistant', 'content': '根据你的请求,我已经将检索结果转化为语音文件,并存放在本地,文件名为file-local-237b5cf0-a916-11ee-a15f-fa280016e4f3。', 'function_call': None, 'plugin_info': None, 'search_info': None}\n" ] } ], "source": [ - "# 定义一个查询字符串,这个查询是关于\"11-2=\"的内容。\n", - "response = await agent._run(\"把上一轮的检索内容转换为语音\")\n", + "# 定义一个查询字符串,这个查询是关于\"把上一轮的检索内容转换为语音\"的内容。\n", + "response = await agent.run(\"把上一轮的检索结果为语音\")\n", "# 使用agent的async_run方法来异步执行查询。由于这是异步操作,因此需要使用'await'关键字。\n", "messages = response.chat_history\n", "for item in messages:\n", diff --git a/erniebot-agent/cookbook/llama_index_function_agent_with_retrieval.ipynb b/erniebot-agent/cookbook/llama_index_function_agent_with_retrieval.ipynb index b70d7134f..d892ac9d6 100644 --- a/erniebot-agent/cookbook/llama_index_function_agent_with_retrieval.ipynb +++ b/erniebot-agent/cookbook/llama_index_function_agent_with_retrieval.ipynb @@ -95,23 +95,23 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "--2023-12-26 02:53:33-- https://paddlenlp.bj.bcebos.com/datasets/examples/construction_regulations.tar\n", + "--2024-01-02 02:27:44-- https://paddlenlp.bj.bcebos.com/datasets/examples/construction_regulations.tar\n", "Resolving paddlenlp.bj.bcebos.com (paddlenlp.bj.bcebos.com)... 36.110.192.178, 2409:8c04:1001:1002:0:ff:b001:368a\n", "Connecting to paddlenlp.bj.bcebos.com (paddlenlp.bj.bcebos.com)|36.110.192.178|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 1239040 (1.2M) [application/x-tar]\n", "Saving to: ‘construction_regulations.tar’\n", "\n", - "construction_regula 100%[===================>] 1.18M 4.98MB/s in 0.2s \n", + "construction_regula 100%[===================>] 1.18M 3.01MB/s in 0.4s \n", "\n", - "2023-12-26 02:53:33 (4.98 MB/s) - ‘construction_regulations.tar’ saved [1239040/1239040]\n", + "2024-01-02 02:27:44 (3.01 MB/s) - ‘construction_regulations.tar’ saved [1239040/1239040]\n", "\n", "construction_regulations/\n", "construction_regulations/城市管理执法办法.pdf\n", @@ -140,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -205,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -223,7 +223,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -245,7 +245,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -254,8 +254,17 @@ "text": [ "/root/qingzhong/anas/envs/py310_openai/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n", - "Parsing nodes: 100%|███████████████████████████████████████████████████████████████| 82/82 [00:00<00:00, 1680.39it/s]\n", - "Generating embeddings: 100%|█████████████████████████████████████████████████████████| 82/82 [00:47<00:00, 1.73it/s]\n" + "Parsing nodes: 100%|██████████████████████████████████████████████████████████████████████████| 82/82 [00:00<00:00, 1680.35it/s]\n", + "Generating embeddings: 12%|████████▎ | 10/82 [00:00<00:03, 18.85it/s]Retrying requests: Attempt 1 ended with: \n", + "Generating embeddings: 24%|████████████████▌ | 20/82 [00:02<00:09, 6.68it/s]Retrying requests: Attempt 1 ended with: \n", + "Generating embeddings: 37%|████████████████████████▉ | 30/82 [00:04<00:09, 5.75it/s]Retrying requests: Attempt 1 ended with: \n", + "Generating embeddings: 49%|█████████████████████████████████▏ | 40/82 [00:07<00:08, 5.07it/s]Retrying requests: Attempt 1 ended with: \n", + "Generating embeddings: 61%|█████████████████████████████████████████▍ | 50/82 [00:09<00:06, 4.89it/s]Retrying requests: Attempt 1 ended with: \n", + "Generating embeddings: 73%|█████████████████████████████████████████████████▊ | 60/82 [00:11<00:04, 4.90it/s]Retrying requests: Attempt 1 ended with: \n", + "Generating embeddings: 85%|██████████████████████████████████████████████████████████ | 70/82 [00:13<00:02, 4.90it/s]Retrying requests: Attempt 1 ended with: \n", + "Generating embeddings: 98%|██████████████████████████████████████████████████████████████████▎ | 80/82 [00:15<00:00, 4.87it/s]Retrying requests: Attempt 1 ended with: \n", + "Generating embeddings: 100%|████████████████████████████████████████████████████████████████████| 82/82 [00:17<00:00, 4.75it/s]\n", + "Retrying requests: Attempt 1 ended with: \n" ] }, { @@ -305,7 +314,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -323,7 +332,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -331,7 +340,7 @@ "output_type": "stream", "text": [ "{'role': 'user', 'content': '检索结果:\\n\\n 第1个段落: 住房和城乡建设部规章 \\n X住房和城乡建设部发布 \\n- 9 - 第三十条 城市管理执法主管部门不得对罚款、 没收违法所得设定任务和目标。 罚款、没收违法所得的款项,应当按照规定全额上缴。 第三十一条 城市管理执法主管部门应当确定法制审核机构,配备一定比例符合条件的法制审核人员,对重大执法决定在执法主体、管辖权限、执法程序、事实认定、法律适用等方面进行法制审核。 第三十二条 城市管理执法主管部门开展执法活动, 应当使用统一格式的行政执法文书。 第三十三条 行政执法文书的送达, 依照民事诉讼法等法律规定执行。 当事人提供送达地址或者同意电子送达的, 可以按照其提供的地址或者传真、电子邮件送达。 采取直接、留置、邮寄、委托、转交等方式无法送达的,可以通过报纸、门户网站等方式公告送达。\\n\\n 第2个段落: 住房和城乡建设部规章 \\n X住房和城乡建设部发布 \\n- 4 - 第十一条 城市管理执法事项范围确定后,应当向社会公开。 第十二条 城市管理执法主管部门集中行使原由其他部门行使的行政处罚权的,应当与其他部门明确职责权限和工作机制。 第三章 执法主体 第十三条 城市管理执法主管部门按照权责清晰、事权统一、精简效能的原则设置执法队伍。 第十四条 直辖市、 设区的市城市管理执法推行市级执法或者区级执法。 直辖市、设区的市的城市管理执法事项,市辖区人民政府城市管理执法主管部门能够承担的,可以实行区级执法。 直辖市、 设区的市人民政府城市管理执法主管部门可以承担跨区域和重大复杂违法案件的查处。\\n\\n检索语句: 城乡建设部规章中,城市管理执法第三章,第十三条是什么?\\n请根据以上检索结果回答检索语句的问题'}\n", - "{'role': 'assistant', 'content': '根据提供的检索结果,城乡建设部规章中,城市管理执法第三章,第十三条的内容是:“城市管理执法主管部门按照权责清晰、事权统一、精简效能的原则设置执法队伍。”', 'function_call': None, 'plugin_info': None, 'search_info': {'results': [{'index': 1, 'url': '', 'title': '城市管理执法办法.pdf'}, {'index': 2, 'url': '', 'title': '城市管理执法办法.pdf'}]}}\n" + "{'role': 'assistant', 'content': '根据提供的检索结果,城乡建设部规章中,城市管理执法第三章,第十三条的内容如下:\\n\\n第十三条 城市管理执法主管部门按照权责清晰、事权统一、精简效能的原则设置执法队伍。', 'function_call': None, 'plugin_info': None, 'search_info': {'results': [{'index': 1, 'url': '', 'title': '城市管理执法办法.pdf'}, {'index': 2, 'url': '', 'title': '城市管理执法办法.pdf'}]}}\n" ] } ], @@ -356,7 +365,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -364,9 +373,9 @@ "output_type": "stream", "text": [ "{'role': 'user', 'content': '把上一轮的检索内容转换为语音'}\n", - "{'role': 'assistant', 'content': '', 'function_call': {'name': 'texttospeech/v1.6/tts', 'thoughts': '用户需要将检索内容转换为语音。', 'arguments': '{\"tex\":\"城市管理执法主管部门按照权责清晰、事权统一、精简效能的原则设置执法队伍。\"}'}, 'plugin_info': None, 'search_info': None}\n", - "{'role': 'function', 'name': 'texttospeech/v1.6/tts', 'content': '{\"audio\": \"file-local-095d5f98-a480-11ee-af84-fa280016e4f3\", \"prompt\": \"参考工具说明中对各个结果字段的描述,提取工具调用结果中的信息,生成一段通顺的文本满足用户的需求。请务必确保每个符合\\'file-\\'格式的字段只出现一次,无需将其转换为链接,也无需添加任何HTML、Markdown或其他格式化元素。\"}'}\n", - "{'role': 'assistant', 'content': '根据您提供的文本,我为您生成了语音文件。请注意,由于技术限制,语音文件无法直接提供给您。您可以通过访问以下链接来获取语音文件:file-local-095d5f98-a480-11ee-af84-fa280016e4f3。如果您需要进一步操作或有其他问题,请随时告诉我。', 'function_call': None, 'plugin_info': None, 'search_info': None}\n" + "{'role': 'assistant', 'content': '', 'function_call': {'name': 'texttospeech/v1.6/tts', 'thoughts': '用户需要将检索内容转换为语音。', 'arguments': '{\"tex\":\"住房和城乡建设部规章 第三章 第十三条 城市管理执法主管部门按照权责清晰、事权统一、精简效能的原则设置执法队伍。\"}'}, 'plugin_info': None, 'search_info': None}\n", + "{'role': 'function', 'name': 'texttospeech/v1.6/tts', 'content': '{\"audio\": \"file-local-ad9def7e-a916-11ee-aa47-fa280016e4f3\", \"prompt\": \"参考工具说明中对各个结果字段的描述,提取工具调用结果中的信息,生成一段通顺的文本满足用户的需求。请务必确保每个符合\\'file-\\'格式的字段只出现一次,无需将其转换为链接,也无需添加任何HTML、Markdown或其他格式化元素。\"}'}\n", + "{'role': 'assistant', 'content': '根据你的请求,我已将“住房和城乡建设部规章 第三章 第十三条 城市管理执法主管部门按照权责清晰、事权统一、精简效能的原则设置执法队伍。”这段文字转换为语音,格式为file-local-ad9def7e-a916-11ee-aa47-fa280016e4f3。', 'function_call': None, 'plugin_info': None, 'search_info': None}\n" ] } ],