def get(self): parser = reqparse.RequestParser() parser.add_argument("offset", type=int, required=True) parser.add_argument("limit", type=int, required=True) args = parser.parse_args(strict=True) offset = args.get("offset") limit = args.get("limit") collection: CollectionReference = client.collection("user_input") query: Query = collection.order_by("create_time", direction=Query.DESCENDING) query = query.offset(offset) query = query.limit(limit) documents = list(query.stream()) data = [] for doc in documents: _data = doc._data create_time = None if _data.get("create_time"): create_time = datetime.fromtimestamp( _data["create_time"], tz=KST).strftime("%Y-%m-%d %H:%M:%S") data.append({ "id": doc.id, "userInput": _data["text"], "answer": _data.get("answer"), "create_time": create_time, }) count = len(data) return {"count": count, "data": data}, 200
top_score = each[1] top_answers.append(each[0]) else: if top_score == each[1]: top_answers.append(each[0]) else: break if not top_answers: return "잘 모르겠다냥~" else: ret = random.choice(top_answers) return ret collection_qna = client.collection("qna") def _calc_jaacard(a, b): def __calc_jaccard(a_grams, b_grams): visited = [] num_union = max(len(a_grams), len(b_grams)) # output 뺀 것 num_joint = 0 for gram_a in a_grams: for gram_b in b_grams: if (gram_a == gram_b) and (gram_a not in visited): num_joint += 1 visited.append(gram_a) return num_joint / num_union
from db.connect import client from db import * from engine.preprocessor.clean import clean collection = client.collection("qna") def add_qa(question, answer): question = clean(question) answer = QA(question=question, answer=answer) ret: QA = collection.add(answer.to_dict()) return ret
from lib.flask_restplus import Resource, Namespace from engine.preprocessor.clean import * from engine.services.talk import * from db.connect import client ns = Namespace(name="", description="Restful API") user_input = client.collection("user_input") @ns.route("/<string:text>") class Index(Resource): @ns.doc("챗봇 입력") def get(self, text): text = clean(text, token=False) ui = UserInput(text=text) ret: dict = get_response(ui) user_input.add(ui.to_dict()) return {"answer": ret}, 200
from google.cloud.firestore_v1 import DocumentSnapshot, CollectionReference from db.connect import client collection: CollectionReference = client.collection("user_input") for each in collection.stream(): each: DocumentSnapshot create_time = each.create_time doc_id = each.id ret = collection.document(doc_id).update( {"create_time": create_time.seconds}) print(each._data.get("text")) print(ret)