当前位置:   article > 正文

使用gradio快速构建llm聊天_ollama gradio

ollama gradio

前期准备:

语言模型采用qwen7b,方法使用ollama。

  1. llm = Ollama(base_url="http://localhost:11434",
  2. model="qwen:7b",
  3. callback_manager=CallbackManager([StreamingStdOutCallbackHandler()]),
  4. )

embedding模型选用bge large zh

  1. def embedding_data():
  2. '''
  3. embedding 数据 使用bge large zh模型,代替 openai的embeddings = OpenAIEmbeddings()
  4. '''
  5. model_name = MODEL_PATH['embed_model'][EMBEDDING_MODEL]
  6. model_kwargs = {'device': EMBEDDING_DEVICE}
  7. encode_kwargs = {'normalize_embeddings': True}
  8. # self.model = sentence_transformers.SentenceTransformer(model_name)
  9. model = HuggingFaceBgeEmbeddings(
  10. model_name=model_name,
  11. model_kwargs=model_kwargs,
  12. encode_kwargs=encode_kwargs
  13. )
  14. return model

知识库用chroma

全部代码如下:

  1. import os
  2. import gradio as gr
  3. from langchain.chains.question_answering import load_qa_chain
  4. from langchain_community.vectorstores.chroma import Chroma
  5. from langchain_core.prompts import PromptTemplate
  6. from utils.embedding_data import embedding_data
  7. from utils.llm import load_llm
  8. llm = load_llm()
  9. QA_PROMPT="""使用以下上下文和聊天历史记录来回答最后的问题。如果你不知道答案,就说你不知道,不要试图编造答案.
  10. 上下文: {context}
  11. 聊天历史记录: {chat_history}
  12. 问题: {question}
  13. 有帮助的答案:"""
  14. QA_PROMPT = PromptTemplate(
  15. template=QA_PROMPT, input_variables=["context", "chat_history","question"]
  16. )
  17. # 加载数据库
  18. persist_directory = os.path.join('knowledge_base', "chroma")
  19. print(persist_directory)
  20. # embedding model
  21. model = embedding_data()
  22. vectorstore = Chroma(persist_directory=persist_directory, embedding_function=model)
  23. def echo(message, history):
  24. chain = load_qa_chain(llm, chain_type="stuff", prompt=QA_PROMPT)
  25. docs = vectorstore.as_retriever().get_relevant_documents(message)
  26. result = chain({"input_documents": docs, "question": message, "chat_history": history}, return_only_outputs=True)
  27. print(message,history)
  28. print(type(result['output_text']))
  29. print(type(message))
  30. return result['output_text']
  31. demo = gr.ChatInterface(fn=echo, examples=["hello", "hola", "merhaba"], title="Echo Bot")
  32. demo.launch(share=True)

需要更改的地方有:llm=load_llm,model=embedding()根据 前期准备修改

数据库文件自行准备。

接口的好处可以用client直接调用

总体效果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/586315
推荐阅读
相关标签
  

闽ICP备14008679号