feat:parmas

This commit is contained in:
yujj128
2025-06-05 15:40:03 +08:00
parent dfc3d54204
commit 4813d7b076
4 changed files with 55 additions and 13 deletions

View File

@@ -4,6 +4,7 @@ import requests, json
from .openai_client import call_openai_api
from decouple import config
import threading, re
from ..tools import getinfo, params_filter
MODEL_NAME = config('MODEL_NAME', default="")
BASE_URL = config('MODEL_BASE_URL', default="")
@@ -17,9 +18,27 @@ def is_json(myjson):
return False
def query_room_info() -> str:
resp = requests.get('http://127.0.0.1:8000/myapi/room/')
return resp.text
def query_room_info(params) -> str:
# resp = requests.get('http://127.0.0.1:8000/myapi/room/')
"""
query_params:
ytenantId not null
typeIds
pageNum
pageSize
"""
print("当前params : {0}".format(params))
tenant_id = params.get('ytenantId', None)
if not tenant_id:
raise Exception("ytenantId 不能为空")
access_token = getinfo.get_access_token(tenant_id)
params['access_token'] = access_token
meeting_room = getinfo.query_meetingroom(params)
content = json.loads(json.dumps(meeting_room))
result = params_filter.filter_params(content['data'], "query_meeting_room")
return str(result)
def book_room(data: dict) -> str:
@@ -32,10 +51,10 @@ def check_and_process_think(content: str) -> str:
return filtered_text
def build_prompt():
def build_prompt(params):
"""构建增强提示词"""
# 获取可用会议室信息
room_info = query_room_info()
room_info = query_room_info(params)
for_mart_str = '''
{
"room_id":"11", //会议室ID
@@ -130,13 +149,13 @@ def add_message_async(manager: DialogManager, session_id: str, role: str, conten
thread.start()
def process_chat(user_id: str, user_input: str):
def process_chat(user_id: str, user_input: str, params: dict):
history = []
query_history = dialog_manager.get_history(user_id)
history.extend(query_history)
prompt = ''
if history is None or len(history) == 0:
prompt = build_prompt()
prompt = build_prompt(params)
add_message_async(dialog_manager, user_id, 'system', prompt)
add_message_async(dialog_manager, user_id, 'user', user_input)
resp = call_openai_api(model=MODEL_NAME, system_prompt=prompt, user_query=user_input,

View File

@@ -106,11 +106,8 @@ def query_meetingroom(params):
print("paramas ", params)
respones = requests.get(url=request_url, params=params,
headers=settings.DEFAULT_HEADER)
result = respones.json()
if respones.status_code == 200:
return result
else:
raise Exception(f"请求查询会议室失败 状态码: {respones.status_code}")
return respones.json()
def query_meetingbooking_info(params):

View File

@@ -0,0 +1,21 @@
from django import template
register = template.Library()
# 定义各接口的必要参数白名单
PARAM_WHITELIST = {
'query_meeting_room': ['id','name','typeid','capacity',
'common','commonBelongOrgId',
'belongOrgName','typeName','isApprove'],
}
@register.filter
def filter_params(data, endpoint_name):
"""保留指定接口的必要参数"""
whitelist = PARAM_WHITELIST.get(endpoint_name, [])
if isinstance(data, dict):
return {k: v for k, v in data.items() if k in whitelist}
elif isinstance(data, list):
return [filter_params(item, endpoint_name) for item in data]
return data

View File

@@ -123,4 +123,9 @@ def book_meeting_room(request):
# return HttpResponseNotAllowed(['POST'])
@require_POST
def room_chat(request):
params = json.loads(request.query_params)
data = json.loads(request.body)
resp = process_chat(data['user_id'], data['user_query'], params)
return JsonResponse(resp)