DB-GPT/dbgpt/app/scene/chat_db/professional_qa/prompt.py
2024-01-10 10:39:04 +08:00

63 lines
1.7 KiB
Python

from dbgpt._private.config import Config
from dbgpt.app.scene import AppScenePromptTemplateAdapter, ChatScene
from dbgpt.app.scene.chat_db.professional_qa.out_parser import NormalChatOutputParser
from dbgpt.core import (
ChatPromptTemplate,
HumanPromptTemplate,
MessagesPlaceholder,
SystemPromptTemplate,
)
CFG = Config()
_DEFAULT_TEMPLATE_EN = """
Provide professional answers to requests and questions. If you can't get an answer from what you've provided, say: "Insufficient information in the knowledge base is available to answer this question." Feel free to fudge information.
Use the following tables generate sql if have any table info:
{table_info}
user question:
{input}
think step by step.
"""
_DEFAULT_TEMPLATE_ZH = """
根据要求和问题,提供专业的答案。如果无法从提供的内容中获取答案,请说:“知识库中提供的信息不足以回答此问题。” 禁止随意捏造信息。
使用以下表结构信息:
{table_info}
问题:
{input}
一步步思考。
"""
_DEFAULT_TEMPLATE = (
_DEFAULT_TEMPLATE_EN if CFG.LANGUAGE == "en" else _DEFAULT_TEMPLATE_ZH
)
PROMPT_NEED_STREAM_OUT = True
prompt = ChatPromptTemplate(
messages=[
SystemPromptTemplate.from_template(_DEFAULT_TEMPLATE),
MessagesPlaceholder(variable_name="chat_history"),
HumanPromptTemplate.from_template("{input}"),
]
)
prompt_adapter = AppScenePromptTemplateAdapter(
prompt=prompt,
template_scene=ChatScene.ChatWithDbQA.value(),
stream_out=PROMPT_NEED_STREAM_OUT,
output_parser=NormalChatOutputParser(is_stream_out=PROMPT_NEED_STREAM_OUT),
need_historical_messages=True,
)
CFG.prompt_template_registry.register(
prompt_adapter, language=CFG.LANGUAGE, is_default=True
)