File size: 3,089 Bytes
0f73722
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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