之前定义的content只是string,现在需要支持即可以string也可以list
from flask_restx import fields class Messages: def get_model(api): return api.model( "Message", { "role": fields.String(required=True, description="The role of message"), "content": fields.String(required=True, description="The content of message"), }, )
一开始使用LLM查询,发现都是说定义成fields.Raw就行,但是定义成这个之后只要不是json格式就都会报错。
所以只好自己重写一个类,继承Raw然后重写他的schema方法
from flask_restx import fields
class AnyField(fields.Raw):
def format(self, value):
return value
@property
def __schema__(self):
# 返回空字典,不对数据类型进行约束
return {}
class Messages:
def get_model(api):
return api.model(
"Message",
{
"role": fields.String(required=True, description="The role of message"),
"content": AnyField(required=True, description="The content of message"),
},
)
用的时候一样就行:
from flask_restx import Namespace, Resource
api = Namespace('aggeragator', description='aggeragator endpoints')
@api.route('/completion')
class Completion(Resource):
@api.doc('Interacting with specific models')
@api.expect(Messages.get_model(api))
@inject
def post(self):
data = api.payload
...