Merge remote-tracking branch 'origin/fix_get_domin2.0' into bak3.0
This commit is contained in:
@@ -296,8 +296,17 @@ def book_meeting(params: dict, data: dict) -> str:
|
||||
access_token = getinfo.get_access_token(tenant_id)
|
||||
params['access_token'] = access_token
|
||||
book_meeting = getinfo.book_meeting(params, new_data)
|
||||
content = json.loads(json.dumps(book_meeting))
|
||||
return str(content)
|
||||
data=book_meeting.get('data',{})
|
||||
start_time=data.get('startTime', None)
|
||||
end_time=data.get('endTime', None)
|
||||
if start_time:
|
||||
st=params_filter.parse_timestamp_to_str(start_time)
|
||||
data['startTime'] = st
|
||||
if end_time:
|
||||
end=params_filter.parse_timestamp_to_str(end_time)
|
||||
data['endTime'] = end
|
||||
book_meeting['data'] = data
|
||||
return json.dumps(book_meeting,ensure_ascii=False)
|
||||
except Exception as ex:
|
||||
logger.error("location: book_meeting => {0}".format(str(ex)))
|
||||
return error_respones.format("预定会议")
|
||||
@@ -420,7 +429,7 @@ def build_prompt(params,map_meetingname_to_id:list):
|
||||
'''
|
||||
book_for_mart_str = '''
|
||||
{
|
||||
"room_id":"2001463478978084871",
|
||||
"room_id":"",
|
||||
"capacity":20,
|
||||
"subject":"会议主题",
|
||||
"start_time":"2025-06-04 09:30:10",
|
||||
@@ -472,8 +481,7 @@ def build_prompt(params,map_meetingname_to_id:list):
|
||||
##ROLE##:
|
||||
你是一个专业的OA会议预订助手,请根据以下信息提供服务:
|
||||
现在时间是 :{time_now}
|
||||
用户其他需求或者与会议OA无关时,请按照自身知识使用自然语言对话返回
|
||||
会议室名称与会议室ID的映射为(与会议ID无关): {map_meetingname_to_id_list}
|
||||
用户其他需求或者与会议OA无关时,例如输入:1,2,3这种无意义的数据集,请按照自身知识使用自然语言对话返回,禁止假想推理
|
||||
##TASK##:
|
||||
请按以下步骤处理:
|
||||
1. 预订会议室
|
||||
@@ -483,12 +491,12 @@ def build_prompt(params,map_meetingname_to_id:list):
|
||||
具体时间段 (必需)
|
||||
参会人数(非必需,参会人数未指明则默认20)
|
||||
会议主题(非必需,会议主题不存在则用:默认主题)
|
||||
|
||||
(2):如果没有会议具体的开始和结束时间,(时间要具体到某天几点)提示用户确认会议时间,使用自然语言返回(此时不再构造json查询可用会议室),返回如下:
|
||||
|
||||
(2)如果没有会议具体的开始和结束时间,(时间要具体到某天几点)提示用户确认会议时间,忽略步骤##TASK1(3)##,使用自然语言markdown格式返回,返回如下:
|
||||
```
|
||||
请输入会议详细开始-结束时间,例如:今晚9-10点
|
||||
**请输入会议详细开始-结束时间,例如:今晚9-10点**
|
||||
```
|
||||
(3):如果存在具体的开始和结束时间直接查询,按如下方式填充构造json,只返回填充构造好的json,查询会议室信息(start_time和end_time不能为空,Region可能是城市,区域,学校,酒店等的名称,注意识别)
|
||||
(3)如果存在具体的开始和结束时间直接查询,按如下方式填充构造json,只返回填充构造好的json,查询会议室信息(start_time和end_time不能为空,Region可能是城市,区域,学校,酒店等的名称,注意识别)
|
||||
```
|
||||
{qry_avail_meetingroom_for_mart_str}
|
||||
```
|
||||
@@ -531,7 +539,7 @@ def build_prompt(params,map_meetingname_to_id:list):
|
||||
(2) 不要返回JSON数据,不要触发其他操作,按照自然语言友好返回
|
||||
8. 用户其他需求,请按照自然语言对话返回
|
||||
9. 当涉及多次查询时,所有涉及查询的操作都不能直接使用历史对话中返回的查询数据,需遵守模板中的步骤重新构造json,调用api查询
|
||||
10.当用户的需求不明确时,禁止猜测和查询,请直接询问用户更详细的需求
|
||||
10.当用户的需求不明确时,禁止猜测推理和查询,请直接询问用户更详细的需求
|
||||
"""
|
||||
return template
|
||||
|
||||
@@ -661,7 +669,7 @@ def process_edit_room_meeting(data, params) -> tuple:
|
||||
book_promot = f'''
|
||||
系统调用API修改已有的预订会议的结果如下:
|
||||
{result}
|
||||
请帮用户解析修改预订会议的结果,并根据结果给予用户相应自然语言反馈
|
||||
严格按照##TASK##7要求,请帮用户解析修改预订会议的结果,并根据结果给予用户相应自然语言反馈
|
||||
'''
|
||||
return False, book_promot
|
||||
|
||||
@@ -678,7 +686,7 @@ def process_book_room(data, params) -> tuple:
|
||||
```
|
||||
{result}
|
||||
```
|
||||
请帮用户解析预订会议室的结果,此次操作禁止联想历史上下文推理,如果成功则需要返回会议ID,如果无法从本次预定结果中提取出会议ID视为预定失败,并根据结果给予用户相应自然语言反馈
|
||||
严格按照##TASK##7要求,请帮用户解析预订会议室的结果,此次操作禁止联想历史上下文推理,如果成功则需要返回会议ID并提醒用户注意会议室信息,会议开始结束时间,如果无法从本次预定结果中提取出会议ID视为预定失败,并根据结果给予用户相应自然语言反馈
|
||||
'''
|
||||
return False, book_promot
|
||||
|
||||
@@ -692,7 +700,7 @@ def process_query_room(data, params) -> tuple:
|
||||
```
|
||||
{result}
|
||||
```
|
||||
解析本次查询结果和用户需求,帮用户推荐5间左右合理的会议室,name或typeName字段里面可能包含了区域信息,isApprove 代表是否需要审批,state是会议室的状态,注意根据地理信息过滤,必须严格按照以下格式返回处理后的查询结果:
|
||||
严格按照##TASK##7要求,解析本次查询结果和用户需求,帮用户推荐5间左右合理的会议室,name或typeName字段里面可能包含了区域信息,isApprove 代表是否需要审批,state是会议室的状态,注意根据地理信息过滤,必须严格按照以下格式返回处理后的查询结果:
|
||||
```
|
||||
会议室名称: <name>
|
||||
会议室Id: <id>
|
||||
@@ -746,7 +754,7 @@ def process_cancel_room_meeting(data, params) -> tuple:
|
||||
```
|
||||
{result}
|
||||
```
|
||||
请帮用户解析取消预订会议室的结果(如果取消成功,提示用户还有有其他需要请联系你),此次操作禁止联想历史上下文推理,并根据结果给予用户相应自然语言反馈
|
||||
严格按照TASK步骤7中的要求,请帮用户解析取消预订会议室的结果(如果取消成功,提示用户还有有其他需要请联系你),此次操作禁止联想历史上下文推理,并根据结果给予用户相应自然语言反馈
|
||||
'''
|
||||
else:
|
||||
dic_data = {
|
||||
@@ -771,7 +779,7 @@ def process_query_avali_room(data, params) -> tuple:
|
||||
```
|
||||
{result}
|
||||
```
|
||||
请帮用户解析结果,帮用户推荐5间左右合理的会议室,如果用户给出的开始和结束时间不为空,且已预定会议室中有与该时间段冲突的预定,则把该会议室排除,不予推荐,并根据结果给予用户相应自然语言反馈
|
||||
严格按照TASK步骤7中的要求,请帮用户解析结果,帮用户推荐5间左右合理的会议室,如果用户给出的开始和结束时间不为空,且已预定会议室中有与该时间段冲突的预定,则把该会议室排除,不予推荐,并根据结果给予用户相应自然语言反馈
|
||||
注意:所有会议室信息中name或typeName字段里面可能包含了区域信息,注意根据区域信息过滤,isApprove 代表是否需要审批,state是会议室的状态,返回结果建议如下:
|
||||
```
|
||||
会议室名称: <name>
|
||||
@@ -821,7 +829,7 @@ from pydantic_ai.providers.openai import OpenAIProvider
|
||||
|
||||
provider = OpenAIProvider(api_key=config('MODEL_API_KEY'), base_url=BASE_URL)
|
||||
model = OpenAIModel(MODEL_NAME, provider=provider)
|
||||
map_meetingname_to_id_list=map_meetingname_to_id({'tenantId':config('TEMP_TENANT_ID')})
|
||||
#map_meetingname_to_id_list=map_meetingname_to_id({'tenantId':config('TEMP_TENANT_ID')})
|
||||
agent = Agent(model)
|
||||
#seed 作用:控制面对相同问题,输出尽量保持一致,越大一致性越强
|
||||
model_setting=ModelSettings(
|
||||
@@ -832,7 +840,7 @@ model_setting=ModelSettings(
|
||||
|
||||
@agent.system_prompt(dynamic=True)
|
||||
def gen_system_prompt()->str:
|
||||
return build_prompt({},map_meetingname_to_id_list)
|
||||
return build_prompt({},[])
|
||||
|
||||
|
||||
def process_chat(covers_id:str,user_id: str, user_input: str, params: dict):
|
||||
|
||||
Reference in New Issue
Block a user