feat(contentPlugin): 完成基本的内容函数调用功能

This commit is contained in:
RockChinQ
2023-07-28 19:03:02 +08:00
parent caa72fa40c
commit ae6994e241
11 changed files with 700 additions and 166 deletions
+49 -34
View File
@@ -5,7 +5,9 @@ import openai
import pkg.openai.keymgr
import pkg.utils.context
import pkg.audit.gatherer
from pkg.openai.modelmgr import ModelRequest, create_openai_model_request
from pkg.openai.modelmgr import select_request_cls
from pkg.openai.api.model import RequestBase
class OpenAIInteract:
@@ -33,45 +35,58 @@ class OpenAIInteract:
pkg.utils.context.set_openai_manager(self)
# 请求OpenAI Completion
def request_completion(self, prompts) -> tuple[str, int]:
"""请求补全接口回复
Parameters:
prompts (str): 提示语
Returns:
str: 回复
def request_completion(self, messages: list):
"""请求补全接口回复=
"""
# 选择接口请求类
config = pkg.utils.context.get_config()
# 根据模型选择使用的接口
ai: ModelRequest = create_openai_model_request(
config.completion_api_params['model'],
'user',
config.openai_config["http_proxy"] if "http_proxy" in config.openai_config else None
)
ai.request(
prompts,
**config.completion_api_params
)
response = ai.get_response()
request: RequestBase
logging.debug("OpenAI response: %s", response)
model: str = config.completion_api_params['model']
# 记录使用量
current_round_token = 0
if 'model' in config.completion_api_params:
self.audit_mgr.report_text_model_usage(config.completion_api_params['model'],
ai.get_total_tokens())
current_round_token = ai.get_total_tokens()
elif 'engine' in config.completion_api_params:
self.audit_mgr.report_text_model_usage(config.completion_api_params['engine'],
response['usage']['total_tokens'])
current_round_token = response['usage']['total_tokens']
cp_parmas = config.completion_api_params.copy()
del cp_parmas['model']
return ai.get_message(), current_round_token
request = select_request_cls(model, messages, cp_parmas)
# 请求接口
for resp in request:
yield resp
# 请求OpenAI Completion
# def request_completion(self, prompts):
# """请求补全接口回复
# """
# config = pkg.utils.context.get_config()
# # 根据模型选择使用的接口
# ai: ModelRequest = create_openai_model_request(
# config.completion_api_params['model'],
# 'user',
# config.openai_config["http_proxy"] if "http_proxy" in config.openai_config else None
# )
# ai.request(
# prompts,
# **config.completion_api_params
# )
# response = ai.get_response()
# logging.debug("OpenAI response: %s", response)
# # 记录使用量
# current_round_token = 0
# if 'model' in config.completion_api_params:
# self.audit_mgr.report_text_model_usage(config.completion_api_params['model'],
# ai.get_total_tokens())
# current_round_token = ai.get_total_tokens()
# elif 'engine' in config.completion_api_params:
# self.audit_mgr.report_text_model_usage(config.completion_api_params['engine'],
# response['usage']['total_tokens'])
# current_round_token = response['usage']['total_tokens']
# return ai.get_message(), current_round_token
def request_image(self, prompt) -> dict:
"""请求图片接口回复