SAOKE / src /processor.py
ALLOUNE
add logic
0f73722
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