feat:parmas
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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):
|
||||
|
||||
21
yj_room_agent/tools/params_filter.py
Normal file
21
yj_room_agent/tools/params_filter.py
Normal 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
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user