| from haystack.telemetry import tutorial_running |
| import logging |
| from haystack.document_stores import InMemoryDocumentStore |
| from haystack.pipelines.standard_pipelines import TextIndexingPipeline |
| from haystack.nodes import BM25Retriever |
| from haystack.nodes import FARMReader |
| from haystack.pipelines import ExtractiveQAPipeline |
| from pprint import pprint |
| from haystack.utils import print_answers |
| from haystack.nodes import EmbeddingRetriever |
| import codecs |
| from haystack.pipelines import FAQPipeline |
| from haystack.utils import print_answers |
| import logging |
| from haystack.telemetry import tutorial_running |
| from haystack.document_stores import InMemoryDocumentStore |
| from haystack.nodes import EmbeddingRetriever |
| import pandas as pd |
| from haystack.pipelines import FAQPipeline |
| from haystack.utils import print_answers |
|
|
| tutorial_running(6) |
|
|
| logging.basicConfig(format="%(levelname)s - %(name)s - %(message)s", level=logging.WARNING) |
| logging.getLogger("haystack").setLevel(logging.INFO) |
|
|
| document_store = InMemoryDocumentStore() |
|
|
| f = codecs.open('faq.txt','r','UTF-8') |
| line = f.readlines() |
| lines = [] |
| for i in range(2,33,2): |
| line.pop(i) |
|
|
| for i in range(33): |
| line[i] = line[i][:-2] |
|
|
| for i in range(0,33,2): |
| lines.append([line[i],line[i+1]]) |
|
|
| colu = ['question','answer'] |
|
|
| df = pd.DataFrame(data=lines, columns=colu) |
| retriever = EmbeddingRetriever( |
| document_store=document_store, |
| embedding_model="sentence-transformers/all-MiniLM-L6-v2", |
| use_gpu=True, |
| scale_score=False, |
| ) |
| question = list(df['question'].values) |
|
|
| df['embedding'] = retriever.embed_queries(queries=question).tolist() |
| df = df.rename(columns={'question': 'content'}) |
| question = list(df['question'].values) |
| docs_to_index = df.to_dict(orient='records') |
| document_store.write_documents(docs_to_index) |
|
|
|
|
| def haysstack(input,retriever=retriever): |
| pipe = FAQPipeline(retriever=retriever) |
| prediction = pipe.run(query=input, params={"Retriever": {"top_k": 1}}) |
| return prediction['answers'] |
| |
|
|
| import gradio as gr |
| from gradio.components import Textbox |
| inputs = Textbox(lines=7, label="请输入你的问题") |
| outputs = Textbox(lines=7, label="来自ChatGPT的回答") |
|
|
| gr.Interface(fn=haysstack, inputs=inputs, outputs=outputs, title="电商客服", |
| description="我是您的电商客服,您可以问任何你想知道的问题", |
| theme=gr.themes.Default()).launch(share=True) |
|
|