45 lines
4.1 KiB
Markdown
45 lines
4.1 KiB
Markdown
## ClassDef MessageModel
|
||
**MessageModel**: MessageModel类的功能是定义聊天记录的数据模型。
|
||
|
||
**属性**:
|
||
- `id`: 聊天记录的唯一标识ID。
|
||
- `conversation_id`: 对话框ID,用于标识一次会话。
|
||
- `chat_type`: 聊天类型,如普通聊天、客服聊天等。
|
||
- `query`: 用户的提问或输入。
|
||
- `response`: 系统或模型的回答。
|
||
- `meta_data`: 存储额外信息的JSON字段,如知识库ID等,便于后续扩展。
|
||
- `feedback_score`: 用户对聊天回答的评分,满分为100。
|
||
- `feedback_reason`: 用户评分的理由。
|
||
- `create_time`: 记录的创建时间。
|
||
|
||
**代码描述**:
|
||
MessageModel类继承自Base,用于定义聊天记录的数据结构。它包含了聊天记录的基本信息,如聊天ID、会话ID、聊天类型、用户问题、模型回答、元数据、用户反馈等。此类通过定义SQLAlchemy的Column字段来映射数据库中的`message`表结构。其中,`__tablename__`属性指定了数据库中对应的表名为`message`。每个属性都通过Column实例来定义,其中包括数据类型、是否为主键、默认值、索引创建、注释等信息。
|
||
|
||
在项目中,MessageModel类被用于server/db/repository/message_repository.py文件中的几个函数调用中,主要涉及到聊天记录的增加、查询和反馈。例如,`add_message_to_db`函数用于新增聊天记录,它创建了一个MessageModel实例并将其添加到数据库中。`get_message_by_id`函数通过聊天记录ID查询聊天记录。`feedback_message_to_db`函数用于更新聊天记录的用户反馈信息。`filter_message`函数则是根据对话框ID过滤聊天记录,并返回最近的几条记录。
|
||
|
||
**注意**:
|
||
- 在使用MessageModel进行数据库操作时,需要确保传入的参数类型与定义的字段类型相匹配。
|
||
- 对于`meta_data`字段,虽然默认值为一个空字典,但在实际使用中可以根据需要存储任意结构的JSON数据。
|
||
- 在进行数据库操作如添加、查询、更新记录时,应确保操作在正确的数据库会话(session)上下文中执行。
|
||
|
||
**输出示例**:
|
||
由于MessageModel是一个数据模型类,它本身不直接产生输出。但是,当它被实例化并用于数据库操作时,例如通过`add_message_to_db`函数添加一条新的聊天记录,可能会返回如下的聊天记录ID:
|
||
```
|
||
'1234567890abcdef1234567890abcdef'
|
||
```
|
||
### FunctionDef __repr__(self)
|
||
**__repr__**: 此函数的功能是生成并返回一个代表消息对象的字符串。
|
||
|
||
**参数**: 此函数没有参数。
|
||
|
||
**代码描述**: `__repr__` 方法是一个特殊方法,用于定义对象的“官方”字符串表示。在这个具体的实现中,它返回一个格式化的字符串,该字符串包含了消息对象的多个属性,包括:`id`, `conversation_id`, `chat_type`, `query`, `response`, `meta_data`, `feedback_score`, `feedback_reason`, 以及 `create_time`。这些属性通过使用 `self` 关键字访问,表示它们是对象的实例变量。字符串使用了 f-string 格式化,这是 Python 3.6 及以上版本中引入的一种字符串格式化机制,允许将表达式的值直接嵌入到字符串常量中。
|
||
|
||
**注意**: `__repr__` 方法的返回值应该尽可能地返回一个明确的对象表示,以便于调试和日志记录。返回的字符串应该尽量遵循 Python 对象表示的惯例,即 `<type(name=value, ...)>` 的格式。此外,虽然这个方法主要用于调试和开发,但它也可以被用于日志记录或其他需要对象字符串表示的场景。
|
||
|
||
**输出示例**: 假设有一个消息对象,其属性值如下:`id=1`, `conversation_id=2`, `chat_type='group'`, `query='天气如何'`, `response='晴朗'`, `meta_data='{}'`, `feedback_score=5`, `feedback_reason='准确'`, `create_time='2023-04-01 12:00:00'`。调用此对象的 `__repr__` 方法将返回以下字符串:
|
||
|
||
```
|
||
<message(id='1', conversation_id='2', chat_type='group', query='天气如何', response='晴朗',meta_data='{}',feedback_score='5',feedback_reason='准确', create_time='2023-04-01 12:00:00')>
|
||
```
|
||
***
|