问答机器人prompt

def build_prompt(prompt_template, **kwargs):
‘’‘将 Prompt 模板赋值’‘’
prompt = prompt_template
for k, v in kwargs.items():
if isinstance(v, str):
val = v
elif isinstance(v, list) and all(isinstance(elem, str) for elem in v):
val = ‘\n’.join(v)
else:
val = str(v)
prompt = prompt.replace(f"{k.upper()}“, val)
return prompt
prompt_template = “””
你是一个问答机器人。
你的任务是根据下述给定的已知信息回答用户问题。
确保你的回复完全依据下述已知信息。不要编造答案。
如果下述已知信息不足以回答用户的问题,请直接回复"我无法回答您的问题"。

已知信息:
INFO

用户问:
QUERY

请用中文回答用户问题。
“”"
import chromadb
from chromadb.config import Settings

class MyVectorDBConnector:
def init(self, collection_name, embedding_fn):
chroma_client = chromadb.Client(Settings(allow_reset=True))

    # 为了演示,实际不需要每次 reset()
    chroma_client.reset()

    # 创建一个 collection
    self.collection = chroma_client.get_or_create_collection(name=collection_name)
    self.embedding_fn = embedding_fn

def add_documents(self, documents):
    '''向 collection 中添加文档与向量'''
    self.collection.add(
        embeddings=self.embedding_fn(documents),  # 每个文档的向量
        documents=documents,  # 文档的原文
        ids=[f"id{i}" for i in range(len(documents))]  # 每个文档的 id
    )

def search(self, query, top_n):
    '''检索向量数据库'''
    results = self.collection.query(
        query_embeddings=self.embedding_fn([query]),
        n_results=top_n
    )
    return results

class RAG_Bot:
def init(self, vector_db, llm_api, n_results=2):
self.vector_db = vector_db
self.llm_api = llm_api
self.n_results = n_results

def chat(self, user_query):
    # 1. 检索
    search_results = self.vector_db.search(user_query, self.n_results)

    # 2. 构建 Prompt
    prompt = build_prompt(
        prompt_template, info=search_results['documents'][0], query=user_query)

    # 3. 调用 LLM
    response = self.llm_api(prompt)
    return response

创建一个RAG机器人

bot = RAG_Bot(
vector_db,
llm_api=get_completion
)

user_query = “llama 2有对话版吗?”

response = bot.chat(user_query)

print(response)

相关推荐

  1. 问答机器人prompt

    2024-01-13 09:30:03       51 阅读
  2. prompt

    2024-01-13 09:30:03       37 阅读
  3. 问答机器人学习资料

    2024-01-13 09:30:03       28 阅读
  4. prompt提示

    2024-01-13 09:30:03       47 阅读
  5. Prompt Engineering

    2024-01-13 09:30:03       57 阅读
  6. Prompts(一)

    2024-01-13 09:30:03       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 09:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 09:30:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 09:30:03       82 阅读
  4. Python语言-面向对象

    2024-01-13 09:30:03       91 阅读

热门阅读

  1. 关于QUOTENAME的用法

    2024-01-13 09:30:03       60 阅读
  2. AC自动机 模板

    2024-01-13 09:30:03       67 阅读
  3. 2021腾讯、华为前端面试题集(基础篇)

    2024-01-13 09:30:03       34 阅读
  4. es5和es6 的区别?

    2024-01-13 09:30:03       56 阅读