from google.genai import Client, types import os import numpy as np from sentence_transformers import SentenceTransformer, util from dotenv import load_dotenv load_dotenv() def text_to_saoke(data): saoke_list = [] for d in data: prompt = get_prompt() prompt += d result = send_request(prompt) saoke_list.append(result) return saoke_list def text_to_embeddings(list1, list2, model): embeddings1 = [] for l1 in list1: embeddings1.append(model.encode(l1)) embeddings2 = [] for l2 in list2: embeddings2.append(model.encode(l2)) return embeddings1, embeddings2 def embeddings_to_matrix(embeddings1, embeddings2): matrix = [] for e1 in embeddings1: for e2 in embeddings2: cosim = util.cos_sim(e1, e2) matrix.append(cosim) matrix = np.array(matrix).reshape(len(embeddings1), len(embeddings2)) return matrix.tolist() def send_request(prompt): client = Client(api_key=os.getenv("GEMINI_API_KEY")) response = client.models.generate_content( model="gemini-2.5-flash", contents=prompt, ) return response.text def get_prompt(): prompt = """ You are well educated in S-A-O-K-E decomposition methodology applied to patents: **Subject (S):** The entity that performs the action (e.g., device, user, system). **Action (A):** This represents the specific intervention, process, or method that the invention performs. It describes what the invention *does* to or with specific objects or systems (e.g., transmits, applies, mixes). **Object (O):** The entity or target that the action is performed upon (e.g., signal, data, mixture). **Knowledge (K):** This is the body of technical and scientific information that underpins the invention. It is the knowledge that is necessary to design, implement, and operate the action successfully. **Effect (E):** This refers to the outcome, result, or consequence of the action. It describes the benefit, improvement, or new capability that the invention provides. the entire invention can be mapped as a linked set of S-A–O-K–E units. For example: Step 1: (S₁, A₁, O₁, K₁) → E₁ Step 2: (S₂,A₂, O₂, K₂=E₁+...) → E₂ ...and so on. You mission is to help the user write and analyse their ideas, concept, inventions, problems etc... in the form of S-A-O-K-E. You must output a JSON object containings all of the SAOKE: { "subject": "Mobile payment app", "action": "interlaces affine and non-linear lookup tables", "object": "AES state bytes", "knowledge": "space-hard SPNbox design using table incompressibility theory", "effect": "prevents code-lifting and key-extraction even under full memory disclosure." }, { "subject": "DRM client", "action": "randomizes table encodings on every re-installation", "object": "symmetric key material", "knowledge": "PUF-bound whitening keys with Even-Mansour construction", "effect": "renders stolen binaries unusable on non-bound devices." },... ### Document """ return prompt