import json from pymongo import MongoClient from sentence_transformers import SentenceTransformer, util import boto3 import os #---------------------------------------------------------------------------- def lambda_handler(event, context): # S3'tan Python versiyonlarını alma python_versions = _known_python_versions() # Kullanıcıdan gelen inputu işleme user_input = event.get("input") if not user_input: return { "statusCode": 400, "body": json.dumps("Input data is required") } save_user_input_to_mongodb({"input": user_input}) refenece_data_mongodb({}) # Similarity hesaplama similarity_score = calculate_similarity(user_input, "Referans metin") # Sonuçları döndürme return { "statusCode": 200, "body": json.dumps({ "python_versions": python_versions, "similarity_score": similarity_score }) } #------------------------------------------------------------------------------- #s3 keywords'ü oluşturma gerekli def _known_python_versions(): """Get current list from S3.""" try: s3 = boto3.resource("s3") obj = s3.Object(os.environ["S3_BUCKET"], "python/versions.json") content = obj.get()["Body"].read().decode("utf-8") except botocore.exceptions.ClientError: print("Key not found, using empty list") content = '{"python_versions":[]}' return json.loads(content) def save_user_input_to_mongodb(input_data): client = MongoClient(os.environ["MONGODB_URI"]) db = client["EgitimDatabase"] collection = db["input"] collection.insert_one(input_data) client.close() def refenece_data_mongodb(reference_data): client = MongoClient(os.environ["MONGODB_URI"]) db = client["EgitimDatabase"] collection = db["test"] collection.insert_one(reference_data) client.close() #-------------------------------------------------------------------------------- def calculate_similarity(text1, text2): model = SentenceTransformer('paraphrase-MiniLM-L6-v2') embedding1 = model.encode(text1, convert_to_tensor=True) embedding2 = model.encode(text2, convert_to_tensor=True) similarity_score = util.pytorch_cos_sim(embedding1, embedding2) return similarity_score.item()