feat:提示词整改-微调-bug修复
This commit is contained in:
@@ -182,10 +182,10 @@ def book_meeting(params: dict, data: dict) -> str:
|
||||
"""
|
||||
|
||||
new_data = {
|
||||
"subject": data["subject"],
|
||||
"subject": data.get('subject','系统默认主题'),
|
||||
"meetingRoomId": data["room_id"],
|
||||
"meetingRoomName": "会议室名称",
|
||||
"meetingDateTimeStamp": int(datetime.now().timestamp() * 1000),
|
||||
"meetingDateTimeStamp": parse_time(data["start_time"]),
|
||||
"startDateTimeStamp": parse_time(data["start_time"]),
|
||||
"endDateTimeStamp": parse_time(data["end_time"]),
|
||||
"meetingPersonYhtUserIds": [
|
||||
@@ -346,9 +346,11 @@ def build_prompt(params):
|
||||
|
||||
time_now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
# 增强提示词模板
|
||||
template = f"""你是一个专业的OA会议预订助手,请根据以下信息提供服务:
|
||||
template = f"""
|
||||
##ROLE##:
|
||||
你是一个专业的OA会议预订助手,请根据以下信息提供服务:
|
||||
现在时间是 :{time_now}
|
||||
|
||||
##TASK##:
|
||||
请按以下步骤处理:
|
||||
1. 预订会议室
|
||||
当用户表达预订意向时:
|
||||
@@ -357,33 +359,47 @@ def build_prompt(params):
|
||||
具体时间段
|
||||
参会人数
|
||||
(2) 若信息不完整,禁止使用历史数据,实时查询可用会议室,然后用自然语言为用户推荐可用会议室,查询操作如下:
|
||||
```
|
||||
{qry_room_info_for_mart_str}
|
||||
```
|
||||
(3) 若信息完整,直接输出标准JSON,执行预定操作:
|
||||
```
|
||||
{book_for_mart_str}
|
||||
```
|
||||
2. 用户需要查询已有的会议室预订情况或者预订情况时,实时查询,禁止使用历史对话数据,结果请按照以下的json示例返回,不需要返回其他的多余数据,返回示例如下:
|
||||
```
|
||||
{qry_book_info_for_mart_str}
|
||||
```
|
||||
3. 取消会议
|
||||
当用户表达取消会议意向时:
|
||||
(1) 先检查是否用户是否提供以下信息:
|
||||
会议编号
|
||||
(2) 若信息不全,先查询用户所有预定,禁止使用历史对话数据,请实时查询,并反馈给用户,查询操作如下:
|
||||
```
|
||||
{qry_book_info_for_mart_str}
|
||||
将查询结果以友好的方式列出,推荐方式{return_booking_info_str}
|
||||
```
|
||||
将查询结果以友好的方式列出,推荐方式:{return_booking_info_str}
|
||||
(3) 若信息完整,直接输出以下标准JSON,执行取消操作:
|
||||
```
|
||||
{cancel_meeting_info_for_mart_str}
|
||||
```
|
||||
4. 修改会议
|
||||
当用户表达修改编辑会议意向时:
|
||||
(1) 先检查是否用户是否提供必要信息和次要信息:
|
||||
必要信息:会议编号
|
||||
次要信息:会议开始时间,会议结束时间,会议主题
|
||||
(2) 若必要信息未提供, 无需询问用户,直接查询用户所有预定,提供给用户选择,查询已预定会议操作如下按json格式返回:
|
||||
```
|
||||
{qry_book_info_for_mart_str}
|
||||
将查询结果以友好的方式列出,过滤掉已经结束的会议,推荐方式{return_booking_info_str}
|
||||
```
|
||||
将查询结果以友好的方式列出,过滤掉已经结束的会议,推荐方式:{return_booking_info_str}
|
||||
(3) 若必要信息全部提供,次要信息全部未提供,提示用户是否想要修改次要信息中的某一项?:
|
||||
|
||||
(4)若必要信息全部提供,次要信息部分提供,根据这些信息来修改会议,修改操作如下:
|
||||
```
|
||||
{edit_meeting_info_for_mart_str}
|
||||
5. 如果当用户再次请求预订会议室时,请不要按照json格式直接提取用户的预订信息,而是请重新查看现有会议室的最新情况,基于用户需求给用户推荐合理的会议室,推荐选项时不需要提取用户预订信息按照json格式返回,只需要重新给用户推荐选项即可,按照正常自然语言对话返回
|
||||
```
|
||||
5. 如果当用户再次请求预订会议室时,请按照步骤1处理
|
||||
6. 如果用户需要解析调用API返回的结果,请解析用户提供的相应结果信息,并给予自然语言反馈,不需要返回json数据
|
||||
7. 用户其他需求,请按照自然语言对话返回
|
||||
|
||||
@@ -478,9 +494,9 @@ def add_message_async(manager: DialogManager, session_id: str, role: str, conten
|
||||
|
||||
def process_edit_room_meeting(data, params) -> tuple:
|
||||
new_data = {
|
||||
"subject": "会议主题",
|
||||
"subject": "系统默认会议主题",
|
||||
"id": data["meetingId"],
|
||||
"meetingDateTimeStamp": int(datetime.now().timestamp() * 1000),
|
||||
"meetingDateTimeStamp": parse_time(data["start_time"]),
|
||||
"startDateTimeStamp": parse_time(data["start_time"]),
|
||||
"endDateTimeStamp": parse_time(data["end_time"]),
|
||||
"meetingPersonYhtUserIds": [
|
||||
@@ -636,14 +652,14 @@ def process_chat(user_id: str, user_input: str, params: dict):
|
||||
fun_name = data.get("func_name", None)
|
||||
book_promot = ''
|
||||
result_false = {'result': False}
|
||||
add_to_content=False
|
||||
if fun_name:
|
||||
func = func_tion_call_map.get(fun_name, None)
|
||||
if func:
|
||||
# 触发函数调用------
|
||||
logger.info(f"触发系统函数调用==>:{fun_name}")
|
||||
add_to_content, book_promot = func(data=data, params=params)
|
||||
if add_to_content:
|
||||
dialog_manager.add_message(user_id, 'user', book_promot)
|
||||
|
||||
logger.info("test point book_promot => {0} ".format(book_promot))
|
||||
|
||||
else:
|
||||
@@ -671,12 +687,14 @@ def process_chat(user_id: str, user_input: str, params: dict):
|
||||
content = resp["choices"][0]["message"]["content"]
|
||||
logger.info("final content => {0}".format(content))
|
||||
new_content = check_and_process_think(content)
|
||||
if add_to_content:
|
||||
dialog_manager.add_message(user_id, 'user', book_promot)
|
||||
add_message_async(dialog_manager, user_id, 'assistant', new_content)
|
||||
return {'response': content}
|
||||
return {'response': new_content}
|
||||
|
||||
else:
|
||||
logger.info("no func ")
|
||||
add_message_async(dialog_manager, user_id, 'assistant', new_content)
|
||||
if reasoning_content:
|
||||
add_message_async(dialog_manager, user_id, 'assistant', reasoning_content)
|
||||
return {'response': content}
|
||||
return {'response': new_content}
|
||||
|
||||
Reference in New Issue
Block a user