Merge remote-tracking branch 'origin/fix_get_domin2.0' into bak3.0

This commit is contained in:
yujj128
2025-07-15 09:16:12 +08:00

View File

@@ -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):