일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- API
- analyzer test
- Python
- 차트
- aggs
- license delete
- springboot
- TensorFlow
- licence delete curl
- zip 암호화
- Test
- aggregation
- sort
- License
- matplotlib
- ELASTIC
- query
- zip 파일 암호화
- Mac
- MySQL
- flask
- docker
- plugin
- Kafka
- high level client
- Java
- 파이썬
- 900gle
- Elasticsearch
- token filter test
Archives
- Today
- Total
개발잡부
[tensorflow 2] Text embedding API를 만들어 보자 2 본문
반응형
flask_restx 로도 만들수 있네.. 하지만.. 있는걸 수정
후딱 POST 만 만들어 보자
뭐지 2000 ms 나오길래 망했다고 생각했는데 다시 해보니 40 ms 대로 나옴
일단 만들면 ..
app.py
# import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_text
import kss, numpy
import json
from flask import Flask, request
from flask_restful import reqparse, abort, Api, Resource
app = Flask(__name__)
api = Api(app)
def getTextVectors(input):
vectors = module(input)
return [vector.numpy().tolist() for vector in vectors]
#
class NumpyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, numpy.ndarray):
return obj.tolist()
return json.JSONEncoder.default(self, obj)
class Vector(Resource):
def post(self):
try:
parser = reqparse.RequestParser()
parser.add_argument('keyword', type=str)
args = parser.parse_args()
_keyword = args['keyword']
return {'vectors': json.dumps(getTextVectors(_keyword)[0], cls=NumpyEncoder)}
except Exception as e:
return {'error': str(e)}
api.add_resource(Vector, '/vectors')
if __name__ == '__main__':
module = hub.load("https://tfhub.dev/google/universal-sentence-encoder-multilingual-large/3")
app.run(debug=True)
flask_restx 로 만드는 예제
from flask import Flask, request
from flask_restx import Resource, Api
app = Flask(__name__)
api = Api(app)
todos = {}
count = 1
@api.route('/todos')
class TodoPost(Resource):
def post(self):
global count
global todos
idx = count
count += 1
todos[idx] = request.json.get('data')
return {
'todo_id': idx,
'data': todos[idx]
}
@api.route('/todos/<int:todo_id>')
class TodoSimple(Resource):
def get(self, todo_id):
return {
'todo_id': todo_id,
'data': todos[todo_id]
}
def put(self, todo_id):
todos[todo_id] = request.json.get('data')
return {
'todo_id': todo_id,
'data': todos[todo_id]
}
def delete(self, todo_id):
del todos[todo_id]
return {
"delete" : "success"
}
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=80)
반응형
Comments