ソースを参照

Add timestamp to messages (#4624)

### What problem does this PR solve?


### Type of change

- [x] New Feature (non-breaking change which adds functionality)
tags/v0.16.0
Kevin Hu 9ヶ月前
コミット
e9ccba0395
コミッターのメールアドレスに関連付けられたアカウントが存在しません
2個のファイルの変更8行の追加6行の削除
  1. 3
    2
      api/db/services/canvas_service.py
  2. 5
    4
      api/db/services/conversation_service.py

+ 3
- 2
api/db/services/canvas_service.py ファイルの表示

# limitations under the License. # limitations under the License.
# #
import json import json
import time
import traceback import traceback
from uuid import uuid4 from uuid import uuid4
from agent.canvas import Canvas from agent.canvas import Canvas
"id": session_id, "id": session_id,
"dialog_id": cvs.id, "dialog_id": cvs.id,
"user_id": kwargs.get("user_id", "") if isinstance(kwargs, dict) else "", "user_id": kwargs.get("user_id", "") if isinstance(kwargs, dict) else "",
"message": [{"role": "assistant", "content": canvas.get_prologue()}],
"message": [{"role": "assistant", "content": canvas.get_prologue(), "created_at": time.time()}],
"source": "agent", "source": "agent",
"dsl": cvs.dsl "dsl": cvs.dsl
} }
yield "data:" + json.dumps({"code": 0, "message": "", "data": ans}, yield "data:" + json.dumps({"code": 0, "message": "", "data": ans},
ensure_ascii=False) + "\n\n" ensure_ascii=False) + "\n\n"


canvas.messages.append({"role": "assistant", "content": final_ans["content"], "id": message_id})
canvas.messages.append({"role": "assistant", "content": final_ans["content"], "created_at": time.time(), "id": message_id})
canvas.history.append(("assistant", final_ans["content"])) canvas.history.append(("assistant", final_ans["content"]))
if final_ans.get("reference"): if final_ans.get("reference"):
canvas.reference.append(final_ans["reference"]) canvas.reference.append(final_ans["reference"])

+ 5
- 4
api/db/services/conversation_service.py ファイルの表示

# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
import time
from uuid import uuid4 from uuid import uuid4
from api.db import StatusEnum from api.db import StatusEnum
from api.db.db_models import Conversation, DB from api.db.db_models import Conversation, DB
if not conv.message: if not conv.message:
conv.message = [] conv.message = []
if not conv.message or conv.message[-1].get("role", "") != "assistant": if not conv.message or conv.message[-1].get("role", "") != "assistant":
conv.message.append({"role": "assistant", "content": ans["answer"], "id": message_id})
conv.message.append({"role": "assistant", "content": ans["answer"], "created_at": time.time(), "id": message_id})
else: else:
conv.message[-1] = {"role": "assistant", "content": ans["answer"], "id": message_id}
conv.message[-1] = {"role": "assistant", "content": ans["answer"], "created_at": time.time(), "id": message_id}
if conv.reference: if conv.reference:
conv.reference[-1] = reference conv.reference[-1] = reference
return ans return ans
"id": session_id, "id": session_id,
"dialog_id": chat_id, "dialog_id": chat_id,
"name": name, "name": name,
"message": [{"role": "assistant", "content": dia[0].prompt_config.get("prologue")}],
"message": [{"role": "assistant", "content": dia[0].prompt_config.get("prologue"), "created_at": time.time()}],
"user_id": kwargs.get("user_id", "") "user_id": kwargs.get("user_id", "")
} }
ConversationService.save(**conv) ConversationService.save(**conv)
"id": session_id, "id": session_id,
"dialog_id": dialog_id, "dialog_id": dialog_id,
"user_id": kwargs.get("user_id", ""), "user_id": kwargs.get("user_id", ""),
"message": [{"role": "assistant", "content": dia.prompt_config["prologue"]}]
"message": [{"role": "assistant", "content": dia.prompt_config["prologue"], "created_at": time.time()}]
} }
API4ConversationService.save(**conv) API4ConversationService.save(**conv)
yield "data:" + json.dumps({"code": 0, "message": "", yield "data:" + json.dumps({"code": 0, "message": "",

読み込み中…
キャンセル
保存