从haystack.telemetry导入tutorial_running 导入日志 从haystack.document_stores导入InMemoryDocumentStore 从haystack.pipelines.standard_pipelines导入TextIndexingPipeline 从haystack.nodes导入BM25Retriever 从haystack.nodes导入FARMReader 从haystack.pipelines导入ExtractiveQAPipeline 从pprint导入pprint 从haystack.utils导入print_answers 从haystack.nodes 导入 EmbeddingRetriever 导入解码器 从haystack.pipelines 导入 FAQPipeline 从haystack.utils 导入 print_answers 导入日志 从haystack.telemetry 导入tutorial_running 从haystack.document_stores 导入 InMemoryDocumentStore 从haystack.nodes 导入 EmbeddingRetriever 将熊猫导入为pd 从haystack.pipelines 导入 FAQPipeline 从haystack.utils 导入 print_answers 教程_运行(6) logging.basicConfig(format= "%(levelname)s - %(name)s - %(message)s" , level=logging.WARNING) logging.getLogger( “干草堆” ).setLevel(logging.INFO) 文档存储器 = InMemoryDocumentStore() f = codecs.open( 'faq.txt' , 'r' , 'UTF-8' ) 行 = f.readlines() 行 = [] 对于范围内的 i ( 2 , 33 , 2 ): 行.pop(i) 对于我在范围内(33): 行[i] = 行[i][:- 2 ] 对于我在范围内(0、33、2): _ lines.append([line[i],line[i+ 1 ]]) colu = [ '问题' , '答案' ] df = pd.DataFrame(数据=行,列=列) 检测器 = EmbeddingRetriever( 文档存储器=文档存储器, embedding_model= "句子变换器/all-MiniLM-L6-v2" , use_gpu=真, scale_score=假, ) df[ '嵌入'] = retriever.embed_queries(查询=问题).tolist() df = df.rename(columns={ 'question' : 'content' }) 问题 = 列表(df[ '问题' ].values) docs_to_index = df.to_dict(orient= '记录' ) document_store.write_documents(docs_to_index) 定义haysstack(输入,检查器=检查器): pipe = FAQPipeline(检测器=检测器) prediction = pipe.run(query=input, params={ "Retriever" : { "top_k" : 1 }}) 返回预测 # 运行任何问题并更改 top_k 以查看更多或更少的答案 将易变导入为gr 从gradio.components导入文档 inputs = Textbox(lines= 7 , label= "请输入你的问题" ) outputs = Textbox(lines= 7 , label= "来自ChatGPT的回答" ) gr.Interface(fn=haysstack, inputs=inputs, outputs=outputs, title= "电商客服" , description= "我是您的电商客服,您可以问任何您想知道的问题" , 主题=gr.themes.Default()).launch(share= True )