일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- token filter test
- Mac
- ELASTIC
- zip 파일 암호화
- aggs
- zip 암호화
- flask
- 파이썬
- Test
- query
- docker
- sort
- license delete
- License
- MySQL
- springboot
- 900gle
- analyzer test
- high level client
- API
- plugin
- Python
- matplotlib
- Kafka
- 차트
- Elasticsearch
- aggregation
- TensorFlow
- licence delete curl
- Java
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