File size: 2,445 Bytes
197f59d
 
 
 
 
 
 
dd38e98
197f59d
 
f0b0422
dd38e98
 
 
 
 
 
 
 
 
 
 
 
 
eb3b23d
84e13f4
197f59d
 
 
 
 
417067d
197f59d
 
417067d
2f94971
a651eac
 
c39601f
8ac8ab1
dd38e98
64e8704
dd38e98
 
98f2449
882d372
8ac8ab1
64e8704
197f59d
 
f0b0422
 
 
417067d
f0b0422
 
417067d
 
8ac8ab1
417067d
379e870
3e6faab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains.question_answering import load_qa_chain
from langchain.llms import OpenAI
from gradio import gradio as gr
from langchain.chat_models import ChatOpenAI

from langchain import PromptTemplate, LLMChain
from langchain.llms import TextGen
from langchain.cache import InMemoryCache

from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    AIMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
from langchain.schema import (
    AIMessage,
    HumanMessage,
    SystemMessage
)

import time
import langchain
import os
OPENAI_API_KEY=os.getenv('OPENAI_API_KEY')

# 嵌入模型
#embeddings = OpenAIEmbeddings()
embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-large-en")

# 加载数据
#docsearch = FAISS.from_texts(texts, embeddings)
docsearch = FAISS.load_local("./faiss_index", embeddings)
template="您是回答ANSYS软件使用查询的得力助手,所有回复必需用中文"
chain = load_qa_chain(OpenAI(temperature=0,model_name="gpt-3.5-turbo"), chain_type="stuff",verbose=True)

def predict(message, history):
    history_langchain_format = []
    for human, ai in history:
        history_langchain_format.append(HumanMessage(content=human))
        history_langchain_format.append(AIMessage(content=ai))
    history_langchain_format.append(HumanMessage(content=message))
    docs = docsearch.similarity_search(message)
    response = chain.run(input_documents=docs, question=message + template)
       
    partial_message = ""
    for chunk in response:
        if len(chunk[0]) != 0:
            time.sleep(0.1)
            partial_message = partial_message + chunk[0]
            yield partial_message    

langchain.llm_cache = InMemoryCache() 
   
gr.ChatInterface(predict,
    textbox=gr.Textbox(placeholder="请提问关于ANSYS软件的问题", container=False, scale=7),
    title="欢迎使用ANSYS软件AI机器人",
    examples=["你是谁?", "请介绍一下Fluent 软件", "create-bounding-box","ANSYS Fluent Architecture","ANSYS Fluent 的软件架构是怎么样的"],
                description='本AI助手为并行公司实验性产品,回答的内容由大模型推理,如回复的内容跟实际情况有偏差请理解').queue().launch(debug=True,auth=('paratera', 'paratera@2023'))