|
@@ -30,12 +30,13 @@ from core.errors.error import (
|
|
|
)
|
|
|
from core.model_runtime.errors.invoke import InvokeError
|
|
|
from extensions.ext_database import db
|
|
|
+from extensions.ext_redis import redis_client
|
|
|
from libs import helper
|
|
|
-from libs.helper import uuid_value
|
|
|
+from libs.helper import uuid_value, extract_remote_ip
|
|
|
from models.model import AppMode
|
|
|
from services.app_generate_service import AppGenerateService
|
|
|
from services.errors.llm import InvokeRateLimitError
|
|
|
-from services.robot_account_service import RobotAccountService
|
|
|
+from services.robot_account_service import RobotAccountService, ACCESS_TOKEN_EXPIRY
|
|
|
|
|
|
|
|
|
# define completion api for user
|
|
@@ -180,10 +181,26 @@ class ChatApiForRobot(Resource):
|
|
|
}
|
|
|
|
|
|
# 3) 获取用户token,封装请求头
|
|
|
- # access_token = RobotAccountService.login("suhh@mail.com.cn", "tj123456")
|
|
|
- access_token = RobotAccountService.get_account_access_token("suhh@mail.com.cn")
|
|
|
- if access_token is None:
|
|
|
- access_token = RobotAccountService.login("suhh@mail.com.cn", "tj123456")
|
|
|
+ login_json = {
|
|
|
+ "email": "suhh@mail.com.cn",
|
|
|
+ "password": "tj123456",
|
|
|
+ }
|
|
|
+
|
|
|
+ # 3.1) 方案1:每次login
|
|
|
+ access_token = RobotAccountService.login(login_json["email"], login_json["password"])
|
|
|
+
|
|
|
+ # # 3.2) 方案2:login后将access_token写入redis,根据是否能够从redis取得内容判断
|
|
|
+ # access_token = RobotAccountService.get_account_access_token(login_json["email"])
|
|
|
+ # # access_token = None
|
|
|
+ # if access_token is None:
|
|
|
+ # # 3.2.1) 方案2-1:调用登录接口,使用返回的access_token
|
|
|
+ # login_response = requests.post(f"{request.host_url}console/api/login", json=login_json)
|
|
|
+ # access_token = login_response.json()["data"]["access_token"]
|
|
|
+ # access_token_key = RobotAccountService._get_access_token_key(login_json["email"])
|
|
|
+ # redis_client.setex(access_token_key, ACCESS_TOKEN_EXPIRY, access_token)
|
|
|
+ #
|
|
|
+ # # 3.2.2) 方案2-2:调用service层封装的login方法,使用返回的access_token
|
|
|
+ # access_token = RobotAccountService.login(login_json["email"], login_json["password"])
|
|
|
|
|
|
headers = {
|
|
|
"Content-Type": "application/json",
|
|
@@ -193,6 +210,8 @@ class ChatApiForRobot(Resource):
|
|
|
"Connection": "keep-alive",
|
|
|
}
|
|
|
|
|
|
+ logging.info(f"Robot request: {extract_remote_ip(request)}")
|
|
|
+
|
|
|
# 4) 封装请求url并发送请求
|
|
|
chat_message_url = f'{request.host_url}console/api/installed-apps/{installed_app_id}/chat-messages'
|
|
|
logging.info("Sending request to %s", chat_message_url)
|