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