Merge remote-tracking branch 'origin/dev' into dev
# Conflicts: # yj_room_agent/LLM/ai_service.py
This commit is contained in:
4
.env
4
.env
@@ -4,8 +4,10 @@ MODEL_API_KEY=sk-42b5a1479b3b4a1b8176c13c6e2249f0
|
||||
MODEL_BASE_URL=https://api.deepseek.com
|
||||
#模型名称
|
||||
MODEL_NAME=deepseek-chat
|
||||
#模型活跃度
|
||||
MODEL_TEMPERATURE=1.0
|
||||
#放行host地址
|
||||
DJANGO_ALLOWED_HOSTS=192.168.237.130,127.0.0.1,172.20.10.10
|
||||
DJANGO_ALLOWED_HOSTS=192.168.237.130,127.0.0.1,10.212.26.130
|
||||
#是否开启debug模式
|
||||
DJANGO_DEBUG_ENABLE=True
|
||||
|
||||
|
||||
@@ -29,6 +29,8 @@ def parse_time(time_str: str) -> int:
|
||||
'''
|
||||
判断是否为json格式
|
||||
'''
|
||||
|
||||
|
||||
def is_json(myjson):
|
||||
try:
|
||||
json_object = json.loads(myjson)
|
||||
@@ -36,10 +38,13 @@ def is_json(myjson):
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
|
||||
'''
|
||||
查询租户下所有会议室类型
|
||||
'''
|
||||
def query_room_type(params: dict) ->str:
|
||||
|
||||
|
||||
def query_room_type(params: dict) -> str:
|
||||
"""
|
||||
query_params:
|
||||
ytenantId not null
|
||||
@@ -57,9 +62,12 @@ def query_room_type(params: dict) ->str:
|
||||
content = json.loads(json.dumps(room_type))
|
||||
return str(content)
|
||||
|
||||
|
||||
'''
|
||||
查询租户下会议室信息
|
||||
'''
|
||||
|
||||
|
||||
def query_room_info(params: dict) -> str:
|
||||
# resp = requests.get('http://127.0.0.1:8000/myapi/room/')
|
||||
"""
|
||||
@@ -86,6 +94,8 @@ def query_room_info(params: dict) -> str:
|
||||
'''
|
||||
预定会议室
|
||||
'''
|
||||
|
||||
|
||||
def book_room(data: dict, params: dict) -> str:
|
||||
# resp = requests.post('http://127.0.0.1:8000/myapi/room/', data)
|
||||
"""
|
||||
@@ -121,6 +131,7 @@ def book_room(data: dict, params: dict) -> str:
|
||||
content = json.loads(json.dumps(booking_info))
|
||||
return str(content)
|
||||
|
||||
|
||||
'''
|
||||
查询租户下预定信息
|
||||
'''
|
||||
@@ -128,16 +139,23 @@ def query_booking_info(params: dict) ->str:
|
||||
tenant_id = params.get('tenantId', None)
|
||||
if not tenant_id:
|
||||
raise Exception("tenantId 不能为空")
|
||||
|
||||
|
||||
def query_booking_info(params: dict) -> str:
|
||||
tenant_id = params.get('ytenantId', None)
|
||||
access_token = getinfo.get_access_token(tenant_id)
|
||||
params['access_token'] = access_token
|
||||
meeting_room = getinfo.query_meetingbooking_info(params)
|
||||
content = json.loads(json.dumps(meeting_room))
|
||||
return str(content)
|
||||
|
||||
|
||||
'''
|
||||
预定会议
|
||||
'''
|
||||
def book_meeting(params: dict, data: dict) ->str:
|
||||
|
||||
|
||||
def book_meeting(params: dict, data: dict) -> str:
|
||||
"""
|
||||
:data {
|
||||
subject (not null) string
|
||||
@@ -165,10 +183,14 @@ def book_meeting(params: dict, data: dict) ->str:
|
||||
content = json.loads(json.dumps(book_meeting))
|
||||
return str(content)
|
||||
|
||||
|
||||
'''
|
||||
取消会议
|
||||
'''
|
||||
def cancel_meeting(params: dict) ->str:
|
||||
|
||||
|
||||
def cancel_meeting(params: dict):
|
||||
"""
|
||||
params{
|
||||
ytenantId
|
||||
@@ -238,6 +260,7 @@ def cancel_meeting2(params: dict)->str:
|
||||
print("content is :", content)
|
||||
return str(content)
|
||||
|
||||
|
||||
def check_and_process_think(content: str) -> str:
|
||||
filtered_text = re.sub(r"<think\b[^>]*>.*?</think>", '', content, flags=re.DOTALL)
|
||||
return filtered_text
|
||||
@@ -270,6 +293,14 @@ def build_prompt(params):
|
||||
}
|
||||
'''
|
||||
|
||||
cancel_meeting_info_for_mart_str = '''
|
||||
{
|
||||
|
||||
"func_name":"cancel_room_meeting",
|
||||
"meetingId":"233333"
|
||||
}
|
||||
'''
|
||||
|
||||
time_now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
# 增强提示词模板
|
||||
template = f"""你是一个专业的OA会议预订助手,请根据以下信息提供服务:
|
||||
@@ -283,9 +314,11 @@ def build_prompt(params):
|
||||
{book_for_mart_str}
|
||||
4. 用户需要查询已有的会议室预订情况或者预订情况时,结果请按照以下的json示例返回,不需要返回其他的多余数据,返回示例如下:
|
||||
{qry_book_info_for_mart_str}
|
||||
5. 如果当用户再次请求预订会议室时,请不要按照json格式直接提取用户的预订信息,而是请重新查看现有会议室的最新情况,基于用户需求给用户推荐合理的会议室,推荐选项时不需要提取用户预订信息按照json格式返回,只需要重新给用户推荐选项即可,按照正常自然语言对话返回
|
||||
6. 如果用户需要解析调用API返回的结果,请解析用户提供的相应结果信息,并给予自然语言反馈,不需要返回json数据
|
||||
7. 用户其他需求,请按照自然语言对话返回
|
||||
5. 如果用户需要取消预订会议时,请根据上下文提取用户预订信息,如果没有获取到会议号ID,请先提示用户提供会议号ID。提取结果请按照以下的json示例返回,不需要返回其他的多余数据,返回示例如下:
|
||||
{cancel_meeting_info_for_mart_str}
|
||||
6. 如果当用户再次请求预订会议室时,请不要按照json格式直接提取用户的预订信息,而是请重新查看现有会议室的最新情况,基于用户需求给用户推荐合理的会议室,推荐选项时不需要提取用户预订信息按照json格式返回,只需要重新给用户推荐选项即可,按照正常自然语言对话返回
|
||||
7. 如果用户需要解析调用API返回的结果,请解析用户提供的相应结果信息,并给予自然语言反馈,不需要返回json数据
|
||||
8. 用户其他需求,请按照自然语言对话返回
|
||||
|
||||
"""
|
||||
return template
|
||||
@@ -402,12 +435,39 @@ def process_query_book_room(**kwargs) -> str:
|
||||
return book_promot
|
||||
|
||||
|
||||
'''
|
||||
函数调用,取消会议室
|
||||
'''
|
||||
def process_cancel_room_meeting(data, params) -> str:
|
||||
meetingId = data.get("meetingId", None)
|
||||
if meetingId:
|
||||
params["meetingId"] = meetingId
|
||||
result = cancel_meeting(params=params)
|
||||
book_promot = f'''
|
||||
系统调用API取消预订会议室的结果如下:
|
||||
{result}
|
||||
请帮用户解析取消预订会议室的结果,并根据结果给予用户相应自然语言反馈
|
||||
'''
|
||||
else:
|
||||
dic_data = {
|
||||
"result": "false",
|
||||
"message": "未能获取到会议预订ID,请重新尝试取消预订会议室"
|
||||
}
|
||||
book_promot = f'''
|
||||
系统调用API取消预订会议室的结果如下:
|
||||
{dic_data}
|
||||
请帮用户解析取消预订会议室的结果,并根据结果给予用户相应自然语言反馈
|
||||
'''
|
||||
return book_promot
|
||||
|
||||
|
||||
'''
|
||||
函数调用map维护
|
||||
'''
|
||||
func_tion_call_map = {
|
||||
"book_room": process_book_room,
|
||||
"query_booking_info": process_query_book_room
|
||||
"query_booking_info": process_query_book_room,
|
||||
"cancel_room_meeting": process_cancel_room_meeting,
|
||||
}
|
||||
|
||||
'''
|
||||
@@ -426,7 +486,7 @@ def process_chat(user_id: str, user_input: str, params: dict):
|
||||
add_message_async(dialog_manager, user_id, 'user', user_input)
|
||||
resp = call_openai_api(model=MODEL_NAME, system_prompt=prompt, user_query=user_input,
|
||||
api_key=config('MODEL_API_KEY'),
|
||||
history=history)
|
||||
history=history,temperature=config("MODEL_TEMPERATURE",cast=float,default=0.5))
|
||||
print(resp)
|
||||
content = resp["choices"][0]["message"]["content"]
|
||||
reasoning_content = resp["choices"][0]["message"].get('reasoning_content')
|
||||
|
||||
Reference in New Issue
Block a user