mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-29 12:09:31 +08:00
Add {date} replacement to chat (#17430)
This commit is contained in:
@@ -94,7 +94,7 @@ _DEFAULT_PROMPT_CONFIG = {
|
||||
" The above is the knowledge base."
|
||||
),
|
||||
"prologue": "Hi! I'm your assistant. What can I do for you?",
|
||||
"parameters": [{"key": "knowledge", "optional": False}],
|
||||
"parameters": [{"key": "knowledge", "optional": False}, {"key": "date", "optional": True}],
|
||||
"empty_response": "Sorry! No relevant content was found in the knowledge base!",
|
||||
"quote": True,
|
||||
"tts": False,
|
||||
@@ -353,6 +353,8 @@ def _apply_prompt_defaults(req):
|
||||
|
||||
if req.get("kb_ids") and not prompt_config.get("parameters") and "{knowledge}" in prompt_config.get("system", ""):
|
||||
prompt_config["parameters"] = [{"key": "knowledge", "optional": False}]
|
||||
if not any(p.get("key") == "date" for p in prompt_config.get("parameters", [])):
|
||||
prompt_config.setdefault("parameters", []).append({"key": "date", "optional": True})
|
||||
|
||||
|
||||
@manager.route("/chats", methods=["POST"]) # noqa: F821
|
||||
|
||||
@@ -22,7 +22,7 @@ from copy import deepcopy
|
||||
from rag.advanced_rag.agentic_rag import RAGTools
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timezone
|
||||
from functools import partial
|
||||
from timeit import default_timer as timer
|
||||
from langfuse import Langfuse, propagate_attributes
|
||||
@@ -335,11 +335,13 @@ async def async_chat_solo(dialog, messages, stream=True, session_id=None):
|
||||
msg[-1]["content"] += attachments
|
||||
if model_config["model_type"] == "chat" and image_attachments:
|
||||
convert_last_user_msg_to_multimodal(msg, image_attachments, factory)
|
||||
sys_date = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
|
||||
system_prompt = prompt_config.get("system", "").replace("{date}", sys_date)
|
||||
if stream:
|
||||
if model_config["model_type"] == "chat":
|
||||
stream_iter = chat_mdl.async_chat_streamly_delta(prompt_config.get("system", ""), msg, dialog.llm_setting)
|
||||
stream_iter = chat_mdl.async_chat_streamly_delta(system_prompt, msg, dialog.llm_setting)
|
||||
else:
|
||||
stream_iter = chat_mdl.async_chat_streamly_delta(prompt_config.get("system", ""), msg, dialog.llm_setting, images=image_files)
|
||||
stream_iter = chat_mdl.async_chat_streamly_delta(system_prompt, msg, dialog.llm_setting, images=image_files)
|
||||
async for kind, value, state in _stream_with_think_delta(stream_iter):
|
||||
if kind == "marker":
|
||||
flags = {"start_to_think": True} if value == "<think>" else {"end_to_think": True}
|
||||
@@ -348,9 +350,9 @@ async def async_chat_solo(dialog, messages, stream=True, session_id=None):
|
||||
yield {"answer": value, "reference": {}, "audio_binary": tts(tts_mdl, value), "prompt": "", "created_at": time.time(), "final": False}
|
||||
else:
|
||||
if model_config["model_type"] == "chat":
|
||||
answer = await chat_mdl.async_chat(prompt_config.get("system", ""), msg, dialog.llm_setting)
|
||||
answer = await chat_mdl.async_chat(system_prompt, msg, dialog.llm_setting)
|
||||
else:
|
||||
answer = await chat_mdl.async_chat(prompt_config.get("system", ""), msg, dialog.llm_setting, images=image_files)
|
||||
answer = await chat_mdl.async_chat(system_prompt, msg, dialog.llm_setting, images=image_files)
|
||||
user_content = msg[-1].get("content", "[content not available]")
|
||||
logging.debug("User: {}|Assistant: {}".format(user_content, answer))
|
||||
yield {"answer": answer, "reference": {}, "audio_binary": tts(tts_mdl, answer), "prompt": "", "created_at": time.time()}
|
||||
@@ -677,6 +679,8 @@ async def async_chat(dialog, messages, stream=True, **kwargs):
|
||||
param_keys.append("knowledge")
|
||||
logging.debug(f"attachments={attachments}, param_keys={param_keys}, embd_mdl={embd_mdl}")
|
||||
|
||||
sys_date = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
|
||||
kwargs["date"] = sys_date
|
||||
for p in prompt_config.get("parameters", []):
|
||||
if p["key"] == "knowledge":
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user