ಪಾಠದ ವೀಡಿಯೋ ಅನ್ನು ನೋಡಿರಿ: ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ರಸೀದಿಗಳೊಂದಿಗೆ AI ಏಜೆಂಟ್ಗಳನ್ನು ಸುರಕ್ಷಿತಗೊಳಿಸುವುದು
(ಪಾಠ ವೀಡಿಯೋ ಮತ್ತು ಥಂಬ್ನೆಲ್ ಅನ್ನು ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಷಯ ತಂಡವು ಮерж್ ಆದ ನಂತರ ಸೇರಿಸಲಾಗುವುದು, ಪಾಠ 14/15 ಮಾದರಿಯನ್ನು ಹೊಂದುತ್ತವೆ.)
ಈ ಪಾಠವು ಇವುಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ:
ಈ ಪಾಠವನ್ನು ಮುಗಿಸಿದ ನಂತರ ನೀವು ತಿಳಿಯಬಹುದು:
ನೀವು Contoso ಟ್ರಾವೆಲ್ಗೆ ಒಂದು AI ಏಜೆಂಟ್ ಅನ್ನು ನಿಯೋಜಿಸಿದ್ದೀರಂತೆ. ಏಜೆಂಟ್ ಗ್ರಾಹಕರ ವಿನಂತಿಗಳನ್ನು ಓದಿ, ಫ್ಲೈಟ್ಗಳ API ಅನ್ನು ಕರೆ ಮಾಡಿ ಆಯ್ಕೆಗಳನ್ನು ಹುಡುಕಿ, ಮತ್ತು ಗ್ರಾಹಕರ ಪರವಾಗಿ ಸೀಟುಗಳನ್ನು ಬುಕ್ ಮಾಡುತ್ತದೆ. ಕಳೆದ ತ್ರೈಮಾಸಿಕದಲ್ಲಿ, ಏಜೆಂಟ್ 50,000 ಬುಕ್ಕಿಂಗ್ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಮಾಡಿತು.
ಇಂದು ಒಂದು ಆಡಿಯಟರ್ ಬರುವರು. ಅವರು ಸರಳ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುತ್ತಾರೆ: “ನಿಮ್ಮ ಏಜೆಂಟ್ ಏನು ಮಾಡಿದೆಯೋ ತೋರಿಸಿ.”
ನೀವು ನಿಮ್ಮ ಲಾಗ್ ಕಡತಗಳನ್ನು ನೀಡುತ್ತೀರಿ. ಆಡಿಯಟರ್ ಅವುಗಳನ್ನು ನೋಡುತ್ತಾನೆ ಮತ್ತು ಗಟ್ಟಿಯಾದ ಪ್ರಶ್ನೆ ಕೇಳುತ್ತಾನೆ: “ನಾನು ಹೇಗೆ ತಿಳಿದುಕೊಳ್ಳಬೇಕೆಂದು ಈ ಲಾಗ್ಗಳನ್ನು ಸಂಪಾದಿಸಲಾಗಿದೆ ಎಂದು?”
ಇದು ಆಡಿಯಟ್-ಟ್ರೇಲ್ ಸಮಸ್ಯೆ. ಇಂದಿನ ಬಹುತೇಕ ಏಜೆಂಟ್ ನಿಯೋಜನೆಗಳು ಇವುಗಳನ್ನು ಅವಲಂಬಿಸುತ್ತವೆ:
ಆಡಿಯಟರ್ ಯಾರನ್ನು ನಂಬಬೇಕೆಂಬುದಿಲ್ಲದೆ ಆಡಿಯಟರ್ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸುವುದಿಲ್ಲ. ಆಂತರಿಕ ಬಳಕೆಗೆ ಆ ನಂಬಿಕೆ ಸಾಮಾನ್ಯವಾಗಿ ಸ್ವೀಕಾರಾರ್ಹ. ನಿಯಂತ್ರಿತ ಕಾರ್ಯಗಳಿಗೆ (ಹಣಕಾಸು, ಆರೋಗ್ಯ ಸೇವೆ, EU AI ಅಧಿನಿಯಮಕ್ಕೆ ಒಳಪಟ್ಟ ಯಾವುದೇ ಕಾರ್ಯ), ಅದು ಸಾಧ್ಯವಿಲ್ಲ.
ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ರಸೀದಿಗಳು ಪ್ರತಿ ಏಜೆಂಟ್ ಕ್ರಿಯೆಯನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಪರಿಶೀಲಿಸಬಹುದಾದಂತೆ ಮಾಡುವುದರಿಂದ ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತವೆ. ಆಡಿಯಟರ್ ನಿಮ್ಮನ್ನು ನಂಬಬೇಕಾಗಿಲ್ಲ. ಅವರಿಗೆ ನಿಮ್ಮ ಸಾರ್ವಜನಿಕ ಕೀ ಮತ್ತು ರಸೀದಿ ಮಾತ್ರ ಅವಶ್ಯ.
ರಸೀದಿ ಅಂದರೆ ಏಜೆಂಟ್ ಏನ್ ಮಾಡಿದೆಯೋ ದಾಖಲಿಸುವ JSON ವಸ್ತು, ಡಿಜಿಟಲ್ ಸಹಿಯಿಂದ ಸಹಿ ಮಾಡಲಾಗುತ್ತದೆ.
flowchart LR
A[ಏಜೆಂಟ್ ಟೋಲ್ ಅನ್ನು ಸ್ನಾಯಿಸುತ್ತಾನೆ] --> B[ರಸೀದಿ ಪೇಲೋಡ್ ನಿರ್ಮಿಸಿ]
B --> C[JSON RFC 8785 ಅನ್ನು ಕೆನಾನಿಕಲ್ ಮಾಡಿ]
C --> E[Ed25519 ಕೆನಾನಿಕಲ್ ಬೈಟ್ಗಳಿಗೆ ಸಹಿ ಹಾಕಿ]
E --> F[ಸಹಿ ಹಾಕಿದ ರಸೀದಿ]
F --> G[ಏಡಿಟರ್ ಆಫ್ಲೈನ್ನಲ್ಲಿ ಪರಿಶೀಲಿಸುತ್ತಾನೆ]
G --> H{ಸಹಿ ಕಾನೂನುಬದ್ಧವೇ?}
H -- yes --> I[ತಳ್ಳು-ಪ್ರಮಾಣಿತ ಪ್ರೂಫ್]
H -- no --> J[ರಸೀದಿ ನಿರಾಕರಿಸಲಾಗಿದೆ]
ಸಾಂಪ್ರದಾಯಿಕ ರಸೀದಿ ಹೀಗೆ ಕಾಣಬಹುದು:
{
"type": "agent.tool_call.v1",
"agent_id": "contoso-travel-bot",
"tool_name": "lookup_flights",
"tool_args_hash": "sha256:a3f9c1...",
"result_hash": "sha256:7b2e1d...",
"policy_id": "contoso-travel-policy-v3",
"timestamp": "2026-04-25T14:30:00Z",
"sequence": 47,
"previous_receipt_hash": "sha256:9d4e6a...",
"signature": {
"alg": "EdDSA",
"sig": "c5af83...",
"public_key": "8f3b2c..."
}
}
ಮೂರು ಗುಣಲಕ್ಷಣಗಳು ಕೆಲಸ ಮಾಡುತ್ತವೆ:
ಸಹಿ. ರಸೀದಿ ಏಜೆಂಟ್ ಗೇಟ್ವೇನಿಂದ Ed25519 ಖಾಸಗಿ ಕೀ ಬಳಸಿ ಸಹಿ ಮಾಡಲಾಗುತ್ತದೆ. ಸಂಬಂಧಿತ ಸಾರ್ವಜನಿಕ ಕಿಯನ್ನು ಹೊಂದಿರುವ ಯಾರಾದರೂ ಸಹಿ ಆಫ್ಲೈನ್ನಲ್ಲಿ ಪರಿಶೀಲಿಸಬಹುದು. ಯಾವುದೇ ಕ್ಷೇತ್ರ ತತ್ತರಿಸಲಾಗುವಿಕೆ ಸಹಿಯನ್ನು ಅಮಾನ್ಯಗೊಳಿಸುತ್ತದೆ.
ಕ್ಯಾನೋನಿಕಲ್ ಎನ್ಕೋಡಿಂಗ್. ಸಹಿ ಮಾಡುವ ಮೊದಲು, ರಸೀದಿಯನ್ನು JSON ಕ್ಯಾನೋನಿಕಲೈಜೆಷನ್ ಸ್ಕೀಮ್ (JCS, RFC 8785) ಉಪಯೋಗಿಸಿ ಸರಣಿ ಗೊಳಿಸಲಾಗುತ್ತದೆ. ಇದರಿಂದ ಎರಡು ಅನುಷ್ಠಾನಗಳು ಒಂದೇ ಲಾಜಿಕಲ್ ರಸೀದಿಯನ್ನು ಬೈಟ್-ಒಂದುಸರಿಯಾದ ಔಟ್ಪುಟ್ ಉತ್ಪಾದಿಸುತ್ತವೆ. ಕ್ಯಾನೋನಿಕಲೈಸೇಶನ್ ಇಲ್ಲದೆ, ವಿಭಿನ್ನ JSON ಸರಿಯಾದಿಕೆಗಳು ಒಂದೇ ವಿಷಯಕ್ಕೆ ವಿಭಿನ್ನ ಸಹಿಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ.
ಹ್ಯಾಶ್ ಚೇನಿಂಗ್. previous_receipt_hash ಕ್ಷೇತ್ರವು ಪ್ರತಿ ರಸೀದಿಯನ್ನು ಹಿಂದಿನ ಹಾದಿಗಾಗಿ ಲಿಂಕ್ ಮಾಡುತ್ತದೆ. ರಸೀದಿಯನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಅಥವಾ ಮರು ಆದೇಶಿಸುವುದು ನಂತರದ ಪ್ರತಿಯೊಂದು ರಸೀದಿಯನ್ನು ಮುರಿಯುತ್ತದೆ. ವೈಯಕ್ತಿಕ ಸಹಿಗಳನ್ನು ದಾಟಿದರೂ ಸಹ, ತತ್ತರಿಸಲಾಗುವಿಕೆ ಸರಣಿ ಮಟ್ಟದಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗುತ್ತದೆ.
ಈ ಗುಣಲಕ್ಷಣಗಳು ಒಟ್ಟಿಗೆ ಮೂರು ಭರವಸೆಗಳನ್ನು ನೀಡುತ್ತವೆ:
ರಸೀದಿ ಉತ್ಪಾದಿಸಲು ವಿಶೇಷ ಗ್ರಂಥಾಲಯ ಅಗತ್ಯವಿಲ್ಲ. ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ಮೂಲಭೂತಗಳು ವೇಗವಾಗಿ ಲಭ್ಯವಿದ್ದು ಲಾಜಿಕ್ ಕೆಲ ಡಜನ್ ಪೈಥಾನ್ ಸಾಲುಗಳಷ್ಟೇ.
code_samples/18-signed-receipts.ipynb ನಲ್ಲಿ ಕೈಯಿಂದ ಮಾಡುವ ವ್ಯಾಯಾಮಗಳು ಸಂಪೂರ್ಣ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಡೆಸುತ್ತವೆ. ಸಾರಾಂಶ:
import json
import hashlib
import base64
from nacl import signing
from jcs import canonicalize # RFC 8785 ಪ್ರಾಮಾಣಿಕ JSON
def b64url_nopad(data: bytes) -> str:
return base64.urlsafe_b64encode(data).decode("ascii").rstrip("=")
def sha256_canonical(obj) -> str:
"""SHA-256 of a Python object's JCS-canonical JSON form."""
return f"sha256:{hashlib.sha256(canonicalize(obj)).hexdigest()}"
# ಸಹಿ ಕೀವನ್ನು ತಯಾರಿಸು ಅಥವಾ ಲೋಡ್ ಮಾಡು (ಉತ್ಪಾದನೆಯಲ್ಲಿ, ಕೀ ವಾಲ್ಟ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸು)
signing_key = signing.SigningKey.generate()
verify_key = signing_key.verify_key
# ರಸೀದಿ ಪೇಲೋಡ್ ನಿರ್ಮಿಸು (ಇನ್ನೂ ಸಹಿ ಇಲ್ಲ)
tool_args = {"origin": "SYD", "destination": "LAX"}
tool_result = [{"flight": "QF11", "price": 1850, "stops": 0}]
payload = {
"type": "agent.tool_call.v1",
"agent_id": "contoso-travel-bot",
"tool_name": "lookup_flights",
"tool_args_hash": sha256_canonical(tool_args),
"result_hash": sha256_canonical(tool_result),
"policy_id": "contoso-travel-policy-v3",
"timestamp": "2026-04-25T14:30:00Z",
"sequence": 0,
"previous_receipt_hash": None,
}
# ನೇರವಾಗಿ JCS ಬೈಟ್ಗಳನ್ನು ಪ್ರಾಮಾಣಿಕಗೊಳಿಸಿ ಮತ್ತು ಸಹಿ ಹಾಕಿ. PureEdDSA ಒಳಗೊಳ್ಳುತ್ತವೆ ಹ್ಯಾಶ್ ಆದೇಶಗಳನ್ನು.
canonical_bytes = canonicalize(payload)
signature_bytes = signing_key.sign(canonical_bytes).signature
# ರಚನಾತ್ಮಕ ಸಹಿ ವಸ್ತುವನ್ನು ಜೋಡಿಸು.
receipt = {
**payload,
"signature": {
"alg": "EdDSA",
"sig": b64url_nopad(signature_bytes),
"public_key": b64url_nopad(bytes(verify_key)),
},
}
ಇದು ಸಂಪೂರ್ಣ ಸಹಿ ಮಾಡುವ ಪೈಪ್ಲೈನ್. ನೋಟ್ಬುಕ್ನ ವ್ಯಾಯಾಮಗಳು ಪ್ರತಿ ಹೆಜ್ಜೆಯನ್ನು ವಿವರಿಸುತ್ತವೆ.
ಪರಿಶೀಲನೆಹುನ್ನೆರುವಿಕೆ ಕ್ರಿಯೆಯ ವಿರುದ್ಧ.
import base64
import hashlib
from nacl import signing
from nacl.exceptions import BadSignatureError
from jcs import canonicalize
def b64url_decode(s: str) -> bytes:
padding = "=" * ((4 - len(s) % 4) % 4)
return base64.urlsafe_b64decode(s + padding)
def verify_receipt(receipt: dict) -> bool:
# ಸಹಿ ಇದೊಂದು ರಚನೆಗೊಂಡ ವಸ್ತು: {"alg", "sig", "public_key"}.
sig_obj = receipt.get("signature")
if not sig_obj or sig_obj.get("alg") != "EdDSA":
return False
# ವಾಸ್ತವವಾಗಿ ಸಹಿ ಹಾಕಲಾದ ಪೇಲೋಡ್ ಅನ್ನು ಪುನಃನಿರ್ಮಿಸಿ (ಸಹಿ ಹೊರತುಪಡಿಸಿ ಎಲ್ಲವೂ).
payload = {k: v for k, v in receipt.items() if k != "signature"}
canonical_bytes = canonicalize(payload)
try:
verify_key = signing.VerifyKey(b64url_decode(sig_obj["public_key"]))
verify_key.verify(canonical_bytes, b64url_decode(sig_obj["sig"]))
return True
except BadSignatureError:
return False
ಈ ಫंक್ಶನ್ ರಸೀದಿಯನ್ನು ತೆಗೆದುಕೊಂಡು ಸಹಿ ಮಾನ್ಯವಾದರೆ True ಅನ್ನು, ಇಲ್ಲದಿದ್ದರೆ False ಅನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಯಾವುದೇ ಜಾಲ ತರಲು, ಸೇವೆ ಅವಲಂಬನೆಯಿಲ್ಲ, ಯಾವುದೇ ಮೂರನೇ ಪಕ್ಷವನ್ನು ನಂಬಬೇಕೂ ಇಲ್ಲ.
ತತ್ತರಿಸುವಿಕೆ ಪತ್ತೆಚೆಗೆ ನೋಟ್ಬುಕ್ನಲ್ಲಿ ಇವುಗಳು ನಡೆಯುತ್ತವೆ:
tool_args_hash ಕ್ಷೇತ್ರದ ಒಂದೊಂದು ಬೈಟ್ ಅನ್ನು ಬದಲಾಯಿಸುವುದು.ಇದು ರಸೀದಿಗಳು ತತ್ತರಿಸುವಿಕೆ-ಸೂಚಿತವಾಗಿದ್ದಾರೆಯೆಂದು ವೈಯಕ್ತಿಕವಾಗಿ ಪ್ರದರ್ಶಿಸುವುದು: ಯಾವುದೇ ಬದಲಾವಣೆ ಸಹಿ ಮುರಿಯುತ್ತದೆ.
ಒಂದು ಸಹಿ ಮಾಡಿದ ರಸೀದಿ ಒಂದು ಕ್ರಿಯೆಯನ್ನು ರಕ್ಷಿಸುತ್ತದೆ. ರಸೀದಿಗಳ ಸರಪಳಿ ಕ್ರಮವನ್ನು ರಕ್ಷಿಸುತ್ತದೆ.
flowchart LR
R0[ರಸೀದಿ 0<br/>ಉದ್ಭವ] --> R1[ರಸೀದಿ 1]
R1 --> R2[ರಸೀದಿ 2]
R2 --> R3[ರಸೀದಿ 3]
R1 -. previous_receipt_hash .-> R0
R2 -. previous_receipt_hash .-> R1
R3 -. previous_receipt_hash .-> R2
ಪ್ರತಿ ರಸೀದಿ ಹಿಂದಿನ ರಸೀದಿಯ ಹ್ಯಾಶ್ ಅನ್ನು ದಾಖಲಿಸುತ್ತದೆ. ರಸೀದಿ 2 ಅನ್ನು ಮೌನವಾಗಿ ತೆಗೆದು ಹಾಕಲು, ದಾಳಿ ಮಾಡುತ್ತಿರುವವರು:
previous_receipt_hash ಕ್ಷೇತ್ರವನ್ನು ಬದಲಾಯಿಸುವುದು (ರಸೀದಿ 3ನ ಸಹಿಯನ್ನು ಮುರಿಯುತ್ತದೆ), ಅಥವಾಖಾಸಗಿ ಕೀ ಹಾರ್ಡ್ವೇರ್ ಕೀ ವಾಲ್ಟ್ನಲ್ಲಿ ಇರಿ ಹಾಗೂ ಪ್ರತಿಯೊಂದು ರಸೀದಿಯೊಂದಿಗೆ ಸಾರ್ವಜನಿಕ ಕೀ ಪ್ರಕಟಿಸಿದರೆ, ಈ ದಾಳಿ ಗುರುತಿಸಲಾಗದೆ ಸಾಧ್ಯವಿಲ್ಲ.
ನೋಟ್ಬುಕ್ ಮುಂದುವರಿದಿದೆ:
previous_receipt_hash ಹಿಂದಿನ ರಸೀದಿಯ ನಿಜವಾದ ಹ್ಯಾಶ್ಗೂ ಹೊಂದಿಕೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದು.ಈ ರೀತಿ ನೀವು ಆಡಿಯಟರ್ ನಿಮ್ಮನ್ನು ನಂಬದೆ ಪರಿಶೀಲಿಸಬಹುದಾದ ಆಡಿಯಟ್ ಟ್ರೇಲ್ ಅನ್ನು ಉತ್ಪಾದಿಸುತ್ತೀರಿ.
ಈ ಪಾಠದ ಅತ್ಯಂತ ಮುಖ್ಯ ವಿಭಾಗ. ರಸೀದಿಗಳು ಶಕ್ತಿಶಾಲಿ ಆದರೆ ಆ ಶಕ್ತಿ ಮಿತವಾಗಿದೆ.
ರಸೀದಿಗಳು ಮೂರು ವಿಷಯಗಳನ್ನು ಸಾಬೀತು ಮಾಡುತ್ತವೆ:
ರಸೀದಿಗಳು ಸಾಬೀತು ಮಾಡದೆ ಇರುತ್ತವೆ:
policy_id ನಲ್ಲಿ ಸೂಚಿಸಲ್ಪಟ್ಟ ನಿಯತಿಯನ್ನು ಸತ್ಯವಾಗಿಯೇ ಮೌಲ್ಯಾಂಕನ ಮಾಡಲಾಯಿತು ಅಥವಾ ಯಾವುದಾದರೂ ಕ್ರಿಯೆಯನ್ನು ಅನುಮತಿಸಿತೇ ಎಂಬುದನ್ನು. ರಸೀದಿ ಹೇಳುವುದು ಪ್ರವೇಶ ವಾದವು, ಅಳವಡಿಸಿಕೊಂಡಿಲ್ಲ.ಈ ಅಗ್ಗುಲು ಎರಡು ಕಾರಣಗಳಿಂದ ಮುಖ್ಯ:
ಸಾಮಾನ್ಯ ತಪ್ಪು “ನಾವು ರಸೀದಿಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ” ಎಂದರೆ “ನಾವು ಆಡಳಿತাধীন” ಎಂದು ಭಾವಿಸುವುದು. ಅಲ್ಲ. ರಸೀದಿಗಳು അടിസ്ഥാനಚೌಕಟ್ಟು. ಆಡಳಿತ ವ್ಯವಸ್ಥೆಯು ನೀವು ನಿರ್ಮಿಸುವ ವ್ಯವಸ್ಥೆಯಾಗಿದೆ.
ಮೇಲಿನ 3ನೇ ಅಂಶವೇ ಪ್ರತ್ಯೇಕ ಅಧ್ಯಾಯಕ್ಕಿಂತ ಹೆಚ್ಚುವರಿ: ಕ್ರಿಯೆ ರಸೀದಿ “ಈ ಕೀ ಈ ವಿಷಯವನ್ನು ಸಹಿ ಮಾಡಿದೆ” ಅಂದ್ರೆ, “ಮನುಷ್ಯನು ಅನುಮೋದನೆ ನೀಡಿದ” ಅಲ್ಲ. ಉಳುಮೆಯ ಲಭ್ಯಕೃತ್ಯಗಳಿಗೆ (ಪರಿಸಿಗ, ಅಳಿಸುವಿಕೆ, ಹಣ ವರ್ಗಾವಣೆ) ಆಡಳಿತಾತ್ಮಕ ಚಟುವಟಿಕೆಗಳು ಈ ಅಗತ್ಯವಿರುವ ನಿರ್ವಹಣಾ ಚಟುವಟಿಕೆ ಚಟುವಟಿಕೆಗಳು ಹೆಚ್ಚಾಗುತ್ತಿವೆ, ಮತ್ತು ಈ ಪಾಠದಲ್ಲಿ ನೀವು ಈಗಾಗಲೇ ನಿರ್ಮಿಸಿದ ಮೂಲಭೂತಗಳಿಂದ ಉತ್ಪಾದಿಸಬಹುದಾದವು.
ಮುಂದಿನ ನೋಟ್ಬುಕ್ code_samples/human-authorization-receipts.ipynb ಎರಡನೇ ರಸೀದಿ ಪ್ರಕಾರವನ್ನು ಸೇರಿಸುತ್ತದೆ, human.approval.v1, ಪಾಠದ ರಸೀದಿಗಳಂತೆ (typed payload Ed25519 ಸಹಿತ canonical JCS ಬೈಟ್ಗಳ ಮೇಲೆ ಸಹಿ ಮಾಡಲಾದ, signature ವಸ್ತು ಸಹಿ ಮಾಡಿದ ಬೈಟ್ಗಳ ಹೊರಗೆ). ಹೆಸರು ನಾಮಿತ ಪ್ರಮಾಣಿಕರಣದ ಪ್ರತಿ ಕಾರ್ಯವನ್ನು ಮತ್ತು ಅದರ ದಿಜೆಸ್ಟ್ ಅನ್ನು ಸಹಿ ಮಾಡುತ್ತದೆ; ಏಜೆಂಟ್ ಕ್ರಿಯೆ ರಸೀದಿ ಅದೇ ಕ್ರಿಯೆ ದಿಜೆಸ್ಟ್ ಮತ್ತು ಒಂದು parent_approval_ref, ಅನುಮೋದನೆಯ receipt_hash, ಸರಣಿಯ previous_receipt_hash ನ ಪಾರದರ್ಶಕಾತ್ಮಕ ನಿಯಮ. ಒಂದು verify_chain ಇಬ್ಬರು ಕಲ್ಪಿತ ಕೀ ನೋಂದಣಿಗಳಡಿ ಎರಡು ದಾಖಲೆಗಳನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ (ಅನುಮೋದಕ ಕీలు ಮತ್ತು ಏಜೆಂಟ್ ಕీలు), ಆದ್ದರಿಂದ ಕೋಡ್ ಮಾರ್ಗವನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತದೆ ಆದರೆ ಅಧಿಕಾರಿಗಳು ಎಂದಿಗೂ ಹಂಚಿಕೊಳ್ಳುವುದಿಲ್ಲ.
ಇದು ಖಚಿತಗೊಳ್ಳುವ ಗುಣಲಕ್ಷಣ: ಮನುಷ್ಯನು ಈ ನಿಖರ ಕ್ರಿಯೆಯನ್ನು ಅನುಮೋದಿಸಿತ್ತು, ಮತ್ತು ಏಜೆಂಟ್ ನಿಖರವಾಗಿ ಆ ಅನುಮೋದಿಸಿದ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಿತು. ನೋಟ್ಬುಕ್ನಲ್ಲಿ ನಿರಾಕರಣಾ ಸಂಗತಿಗಳು ಈ ಗುಣಲಕ್ಷಣವನ್ನು ನಿಜವಾಗಿಸುವುದಕ್ಕೆ ಇರುವವು:
ಪ್ರತಿ ವೈಫಲ್ಯವೂ ವಿಭಿನ್ನ ಕಾರಣದಿಂದ ನಿರಾಕರಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಆಡಿಯಟರ್ ನಿರಾಕರಣೆಯನ್ನು ಓದುವಾಗ ಅಧಿಕಾರ ಹಳೆಯಾಗಿದೆ ಅಥವಾ ಕಾರ್ಯ ಬದಲಾಗಿದೆ ಎಂದು ತಿಳಿದುಕೊಳ್ಳಬಹುದು. ನೋಟ್ಬುಕ್ ತಿಳಿಸುವ ನಿಯಮ: ಸಹಿ ಮಾಡಲಾದ ಅನುಮೋದನೆ ಸ್ವತಂತ್ರ ಅಧಿಕಾರವಲ್ಲ. ಅಧಿಕಾರವಿರುವುದು ಮಾತ್ರ ಎರಡೂ ರಸೀದಿಗಳು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯದಲ್ಲಿ ಒಂದೇ ಕರ್ತವ್ಯವನ್ನು ಬದ್ಧವಾಗಿರುತ್ತವೆ. ಮಾನವ-ಅನುಮೋದನೆ ರಸೀದಿ ಈ ಪಾಠದ ಮೂಲಕ ವ್ಯಾಖ್ಯಾಯಿತ ಶಿಕ್ಷಣ ಸಂಯೋಜನೆಯಾಗಿದೆ, ಅದು draft-farley-acta-signed-receipts ನಿಂದ ವ್ಯಾಖ್ಯಾನದ ಪ್ರಕಾರವಲ್ಲ.
ಈ ಪಾಠದ ಪೈಥನ್ ಕೋಡ್ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಕನಿಷ್ಠವಾಗಿದೆ, ಆದ್ದರಿಂದ ಪ್ರತಿಯೊಂದು ಸಾಲನ್ನು ಓದಿ ಏನಾಗುತ್ತಿದ್ದುದು ತಿಳಿಯಬಹುದು. ಉತ್ಪಾದನೆಯಲ್ಲಿ, ನಿಮಗೆ ಎರಡು ಆಯ್ಕೆಗಳು ಇವೆ:
ನೇರವಾಗಿ ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ಮೂಲಭೂತಗಳ ಮೇಲೆ ನಿರ್ಮಿಸಿ. ಮೇಲಿನ 50 ಸಾಲುಗಳು ಹಲವಾರು ಬಳಕೆಗಳಿಗೆ ಸಾಕಷ್ಟಿವೆ. PyNaCl (Ed25519) ಮತ್ತು jcs ಪ್ಯಾಕೇಜ್ (ಕ್ಯಾನೋನಿಕಲ್ JSON) ಉತ್ತಮ ನಿರ್ವಹಣೆ ಮತ್ತು ಪರಿಶೀಲನೆಯ ಗ್ರಂಥಾಲಯಗಳು.
ಉತ್ಪನ್ನ ರಸೀದಿ ಗ್ರಂಥಾಲಯ ಬಳಸಿ. ಹಲವು ಮುಕ್ತ-ಮೂಲ ಯೋಜನೆಗಳು ಸಹಿ ಮಾಡುವುದು, ಬ್ಯಾಚ್ ಪರಿಶೀಲನೆ, JWK ಸೆಟ್ ವಿತರಣೆ, ನೀತಿ ಎಂಜಿನ್ಗಳ ನೆರವು ಸೇರಿದಂತೆ ಅದೇ ಮಾದರಿಯನ್ನು ಜಾರಿಗೆ ತಂದಿವೆ:
draft-farley-acta-signed-receipts, ಮರುಪಾರದರ್ಶಕತೆ 02) ಬಳಕೆ ಮಾಡುತ್ತದೆ. ಈ ಪಾಠದ ಸರಳ ಶೈಕ್ಷಣಿಕ ರಸೀದಿ ಡ್ರಾಫ್ಟ್ನ {payload, signature} ಎನ್ವಲಪ್ನಿಂದ ಭಿನ್ನವಾಗಿದೆ ಮತ್ತು ಅನುಷ್ಠಾನವಲ್ಲ. ಡ್ರಾಫ್ಟ್ ತನ್ನ ವೈರ್ ಫಾರ್ಮಾಟ್ ಗುರಿಯಲ್ಲಿ ಅನುಷ್ಠಾನಗಳಿಗೆ ಸಹಕಾರದ ಕಿಕ್ಕುಗಳನ್ನು ಪ್ರಕಟಿಸಿದೆ (agent-governance-testvectors).protect-mcp (npm) ಮತ್ತು @veritasacta/verify (npm) ಪ್ಯಾಕೇಜುಗಳು ನೋಡ್ ಆಧಾರಿತ ರಸೀದಿ ಸಹಿ ಮತ್ತು ಆಫ್ಲೈನ್ ಪರಿಶೀಲನೆ ಕಾರ್ಯಾನುಷ್ಠಾನವನ್ನು ಒದಗಿಸುತ್ತವೆ, ಎಲ್ಲ MCP ಸರ್ವರ್ಗಳನ್ನು ತತ್ತರಸೂಚಕ ಆಡಿಯಟ್ ಟ್ರೇಲ್ನೊಂದಿಗೆ ಸಾಧಿಸಲು, ರದ್ದು ಮಾಡಿ ಕಾಯ್ದಿರಿಸುವ ಕಾರ್ಯದಲ್ಲಿ ವೀಕ್ಷಣೆ ಅನುಮೋದನಾ ರಸೀದಿಯನ್ನು ಹೊರಡಿಸುವ ವ್ಯವಸ್ಥೆಯನ್ನು ಒಳಗೊಂಡಿದೆ (ಡೆಸ್ಕ್ಟಾಪ್ ಹರಿವುಗಳಲ್ಲಿ ವೆಬ್ ಆಥ್ನ್ ಬೆಂಬಲಿತ), ಮೇಲಿನ ಮಾನವ-ಅನುಮೋದನೆ ನೋಟ್ಬುಕ್ನಂತೆ.pip install nobulex) Ed25519 + JCS ಸಹಿ ಮಾದರಿಯನ್ನು ಪೈಥಾನ್ನಲ್ಲಿ LangChain ಮತ್ತು CrewAI ಸಂಯೋಜನೆಗಳೊಂದಿಗೆ ಒದಗಿಸುತ್ತದೆ, ಪ್ರಕಟಿತ ಪರಸ್ಪರ-ಪರಿಶೀಲನೆ ಪರೀಕ್ಷಾ ಕಿಕ್ಕುಗಳು ಮತ್ತು OWASP PR #2210 ಮೂಲಕ ಕೊಡುಗೆ ಹೊಂದಿದೆ.ನಿಮ್ಮದೇ JWT ಗ್ರಂಥಾಲಯವನ್ನು ಬರೆಯುವುದು ಅಥವಾ ಪರೀಕ್ಷಿತ ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸದಿರುವುದರೊಳಗಿನ ಭೇದದಲ್ಲಿಯೇ, ನಿಮ್ಮದೇ ರಸೀದಿ ಗ್ರಂಥಾಲಯವನ್ನು ರಚಿಸುವ ಅಥವಾ ಬಳಸದಿರುವ ನಿರ್ಧಾರ. ಎರಡೂ ಸಮಂಜಸ; ಗ್ರಂಥಾಲಯ ಸಮಯ ಉಳಿಸುತ್ತದೆ ಮತ್ತು ಪರಿಶೀಲನೆ ಸೌಕರ್ಯ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ; ಆರಂಭದಿಂದ ಬರೆಸುವುದು ಪ್ರತಿಯೊಂದು ಮೂಲಭೂತವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಕೈಪಿಡಿ. ಈ ಪಾಠ ಆರಂಭದಿಂದಲೂ ಮಾರ್ಗವನ್ನು ಕಲಿಸುವುದರಿಂದ ಯಾವುದೇ ಆಯ್ಕೆಗೆ ಮೂಲಸೌಕರ್ಯ ಸಿಗುತ್ತದೆ.
ಅಭ್ಯಾಸ ವ್ಯಾಯಾಮಕ್ಕೆ ಮುಂದುವರಿಯುವ ಮುನ್ನ ನಿಮ್ಮ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ.
1. ರಸೀದಿಯನ್ನು ಏಜೆಂಟ್ ಖಾಸಗಿ Ed25519 ಕೀಲಿನೊಂದಿಗೆ ಸಹಿ ಮಾಡಲಾಗಿದೆ. ಆಡಿಯಟರ್ಗೆ ಸಾರ್ವಜನಿಕ ಕೀ ಮಾತ್ರ ಇದೆ. ಆಡಿಯಟರ್ ಆಫ್ಲೈನ್ನಲ್ಲಿ ರಸೀದಿಯನ್ನು ಪರಿಶೀಲಿಸಬಹುದೇ?
2. ದಾಳಿ ಮಾಡುವವರು ರಸೀದಿ policy_id ಕ್ಷೇತ್ರವನ್ನು ಬದಲಾಯಿಸಿ ಅದেকেಗಿಂತ ಹೆಚ್ಚು ಅನುಮತಿಸುವ ನೀತಿಯಿಂದ ಸಂಚಾಲಿತವಂತೆ ಹೇಳುತ್ತಾರೆ. ಸಹಿ ಆ ಮೂಲ ಪೇಲೋಡ್ ಮೇಲೆ ಆಗಿತ್ತು. ಪರಿಶೀಲನೆ ಸಮಯದಲ್ಲಿ ಏನಾಗುತ್ತದೆ?
3. ರಸೀದಿ ಕಚ್ಚಾ ಆರ್ಗುಮೆಂಟ್ಗಳ ಮತ್ತು ಫಲಿತಾಂಶದ ಬದಲು tool_args_hash ಮತ್ತು result_hash ಅನ್ನು ಏಕೆ ಒಳಗೊಂಡಿದೆ?
4. previous_receipt_hash ಕ್ಷೇತ್ರವು ಪ್ರತಿ ರಸೀದಿಯನ್ನು ಅದರ ಪೂರ್ವ ಅವರೊಂದಿಗೆ ಸಂಪರ್ಕಿಸುತ್ತದೆ. ದಾಳಿಕಾರನು ಸರಣಿಯ ಮಧ್ಯಭಾಗದಲ್ಲಿ ಒಂದು ರಸೀದಿ ಮೌನವಾಗಿ ಅಳಿಸಿದರೆ, ಯಾವುದು ಅಮಾನ್ಯವಾಗುತ್ತದೆ?
5. ರಸೀದಿ ಸ್ಪಷ್ಟವಾಗಿ ಪರಿಶೀಲನೆಗೊಂಡಿದೆ. ಇದು ಏಜೆಂಟ್ನ ಕ್ರಿಯೆ ಸರಿಯಾದುದು, ಧ್ವನಿಪೂರ್ಣ ಅಥವಾ ನೀತಿ ಅನುಕೂಲವಾಗಿದೆ ಎಂದು ಸಾಬೀತಾಗುತ್ತದೆಯೇ?
code_samples/18-signed-receipts.ipynb ಓದಿ ನಾಲ್ಕು ವಿಭಾಗಗಳನ್ನೂ ಪೂರ್ಣಗೊಳಿಸಿ:
ಸ್ಟ್ರೆಚ್ ಸವಾಲು 1: ಇಚ್ಛಿತ ಕ್ಷೇತ್ರ ಒಂದು ಹೆಚ್ಚಿಸಿ (ಉದಾಹರಣೆಗೆ ಟ್ರೇಸಿಂಗ್ಗಾಗಿ ವಿನಂತಿ ID), ಮಾನಕ ಸಹಿ ಲಾಜಿಕ್ ಅನ್ನು ಅದರಲ್ಲಿ ಸೇರಿಸಿ, ಮತ್ತು ರಸೀದಿ ಪರಿಶೀಲನೆಯ ಮೂಲಕ ಮತ್ತೆ ಸುತ್ತುಹೋಗುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ. ನಂತರ ಸಹಿ ನಂತರ ಕ್ಷೇತ್ರವನ್ನು ಬದಲಿಸಿ ಮತ್ತು ಪರಿಶೀಲನೆ ವಿಫಲವಾಗುತ್ತದೆ ಎಂದು ದೃಢಪಡಿಸಿ. ಇದು ಮಾನಕ ಎನ್ಕೋಡಿಂಗ್ನ ಪ್ರತಿಯೊಂದು ಬೈಟ್ ಸಹಿಗೆ ಹೇಗೆ ಕೊಡುಗೆ ನೀಡುತ್ತದೆ ಎಂದು ತಿಳಿಯಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಸ್ಟ್ರೆಚ್ ಸವಾಲು 2: ನಿಮ್ಮ երկու ರಸೀದಿಗಳನ್ನು SHA-256 ಹ್ಯಾಷ್ ಮಾಡಿ (ಮೌಲ್ಯಮಾನ ನಿಯೋಜಿತ ಕ್ರಮದಲ್ಲಿ ಮಾನಕ ಬೈಟುಗಳನ್ನು Concatenate ಮಾಡಿ) ಮತ್ತು ಹಿನ್ನೀಲಿ ಒಂದು ಮೂರನೇ ರಸೀದಿಯಲ್ಲಿ ಹೊಸ ಕ್ಷೇತ್ರವಾಗಿ ಹೇರಿಸಿ. ಎಲ್ಲಾ ಮೂರು ರಸೀದಿಗಳು ಇನ್ನೂ ಸುತ್ತುಹೋಗುತ್ತವೆ ಎಂದು ಪರಿಶೀಲಿಸಿ. ನೀವು ಇತ್ತೀಚೆಗೆ ಒಂದು ಹಂತದ ಒಳಗೊಂಡಿರುವುದು ಸಾಬೀತು ಮಾಡುವುದನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ: ಮೂರನೇ ರಸೀದಿ ಹೊಂದಿರುವೆವರು ಮೊದಲ ಎರಡು ಸಹಿ ಆಗಿದ್ದಾಗ ಇದ್ದವು ಎಂದು ಸಾಬೀತು ಮಾಡುವುವು, ವಿಷಯಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸದೆ. ಇದು ಆಯ್ಕೆಮಾಡಿದ ಬಹಿರಂಗ ಪಟ್ಟಿ ರಸೀದಿಗಳು ವ್ಯಾಪಕವಾಗಿ ಬಳಸುವ ಮಾದರಿ (Merkle ಬದ್ಧತೆಗಳು, RFC 6962).
ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ರಸೀದಿಗಳು AI ಏಜೆಂಟ್ಗಳಿಗೆ ಈ ರೀತಿಯ ಪರಿಶೀಲನಾ ಹಾದಿಯನ್ನು ನೀಡುತ್ತವೆ:
ಇವು ನಮೂದರ ಪರಿಶೀಲನೆ, ನೀತಿ ಜಾರಿಗೊಳಿಸುವಿಕೆ, ಅಥವಾ ಗುರುತು ವ್ಯವಸ್ಥೆಯ ಪರ್ಯಾಯವಲ್ಲ. ಅವು ಆ ಲೇಯರ್ಗಳಿಗೆ ಮೂಲಾವಳಿಯಾಗಿವೆ. ನಿಯಂತ್ರಿತ ವರ್ಕ್ಲೋಡ್ಗಳಲ್ಲಿ ಏಜೆಂಟ್ಗಳನ್ನು ನೆಡಿಸುವಾಗ, ಬಹು-ಸಂಸ್ಥೆಯ ಕಾರ್ಯಪ್ರವಾಹಗಳಲ್ಲಿ, ಅಥವಾ ಭವಿಷ್ಯದಲ್ಲಿ ಪರಿಶೀಲಕನು ನಿಮಗೆ ನಂಬಿಕೆ ಇಡುವುದಿಲ್ಲವೆಂದು ಊಹಿಸಬಹುದಾದ ಪರಿಸರದಲ್ಲಿ, ರಸೀದಿಗಳು ಪರಿಶೀಲನಾ ಹಾದಿಯನ್ನು ನೈತಿಕವಾಗಿಸುವುದು.
ಅತ್ಯಂತ ಪ್ರಮುಖ ಪಾಠ: ರಸೀದಿಗಳು ಯಾರು ಏನು ಹೇಳಿದ್ದು, ಯಾವಾಗ ಎಂದು ಸಾಬೀತು ಮಾಡುತ್ತವೆ. ಅದರಲ್ಲಿ ಹೇಳಿದವು ಸತ್ಯ ಅಥವಾ ಸರಿಯಾಗಿವೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಮಾಡುವುದಿಲ್ಲ. ಆ ಭೇದವನ್ನು ಬಿಗಿಯಾಗಿಯಾಗಿ ಹಿಡಿಯಿರಿ. ಇದು ನೈತಿಕ ಮೂಲವ್ಯವಸ್ಥೆ ಮತ್ತು ಗೊಂದಲ ಮೂಡಿಸುವ ಇತರ ನಡುವಿನ ವ್ಯತ್ಯಾಸ.
ನೀವು ಈ ಪಾಠವನ್ನು ಮುಗಿಸಿ ತಾಂತ್ರಿಕ ವಾಸ್ತವಿಕ ಪರಿಸರದಲ್ಲಿ ರಸೀದಿ-ಸಹಿತ ಏಜೆಂಟ್ ಗಳನ್ನು ನಿಯೋಜಿಸಲು ಸಿದ್ಧರಾಗಿರುವಾಗ:
https://your-org.example.com/.well-known/agent-keys.json.Microsoft Foundry Discord ನಲ್ಲಿ ಸೇರಿ, ಇತರ ಕಲಿಯುವವರನ್ನು ಭೇಟಿ ಮಾಡಿ, ಕಾರ್ಯಾಲಯ ಸಮಯಗಳಲ್ಲಿ ಭಾಗವಹಿಸಿ ಮತ್ತು ನಿಮ್ಮ AI ಏಜೆಂಟ್ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಗಳನ್ನು ಪಡೆಯಿರಿ.
ಈ ಪಾಠವು ಒಬ್ಬೊಬ್ಬ ರಸೀದಿ ಸಹಿ ಮತ್ತು ಹ್ಯಾಶ್ ಸರಣಿಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಇದೇ ಮೂಲಭೂತಗಳು ನೀವು ಮುಂದುವರೆದ ನಿಯಂತ್ರಣ ವ್ಯವಸ್ಥೆಗೆ ಬರುತ್ತಿರುವಾಗ ಹಲವುಂತೆ ಉತ್ತುಂಗ ಮಾದರಿಗಳಲ್ಲಿ ನಾಡಿ ಬೀಳಬಹುದು:
authorization_*) ಮತ್ತು ನಂತರ-ನಿರ್ವಹಣೆ (result_*) ಭಾಗಗಳಲ್ಲಿ ವಿಭಜಿಸಿ ಸ್ವತಂತ್ರ ಸಹಿಗಳೊಂದಿಗೆ ಬಳಸುತ್ತವೆ, ಅಥಾರೈಸೇಶನ್ ನಿರ್ಧಾರ ಮತ್ತು ಕಂಡುಬಂದ ಫಲಿತಾಂಶ ವಿಭಿನ್ನ ಪಾತ್ರದವರು ಅಥವಾ ಸಮಯದಲ್ಲಿ ಸೃಷ್ಟಿಸಿದಾಗ ಉಪಯುಕ್ತ. ಇದು ಈ ಪಾಠದಲ್ಲಿ ಕಲಿಸುವ ರಸೀದಿ ರೂಪರೇಖೆಯ ಮೇಲೆ ಸೇರಿಸಲಾಗುತ್ತದೆ.result_hash ಒಳಗೊಂಡ ಯಾವುದೇ ಬೈಟುಗಳನ್ನು ರಸೀದಿ ಮೊಟ್ಟುಮುದ್ರಣ ಮಾಡುತ್ತದೆ. ವಾಸ್ತವಿಕ ಪೇಲೋಡ್ಗಳು ಹಲವು ಆಯ್ಕೆ-ಅನುಕೂಲನೆಗಳ ಹಾಗೂ ಪೂರ್ವ-ನಿರ್ಧಾರ ನಿರ್ವಹಣೆಯೊಂದಿಗೆ ಸಮೃದ್ಧವಾಗಿರಬಹುದು: ಮೊದಲನೆಯ ಆಗಾಗ ಮತ್ತು ಅದರ ಪೂರ್ಣತೆ, ಅಪಾಯ ಸ್ಥಿತಿ, ಹೊಣೆಗಾರಿಕೆ ಸರಣಿ, ಗೇಟ್ ಫಲಿತಾಂಶ ಇत्यಾದಿ. ಇದರಿಂದ ರಸೀದಿ ಸ್ವರೂಪವನ್ನು ಕನಿಷ್ಠವಾಗಿಟ್ಟುಕೊಳ್ಳಬಹುದು ಮತ್ತು ಪೇಲೋಡ್ ವ್ಯಾಕ್ಯಸಗಳು ಕ್ಷೇತ್ರ-ಪ್ರಕಾರವಾಗಿ ಬೆಳೆಯಬಹುದು.signature.alg ಕ್ಷೇತ್ರವು ML-DSA-65 (NIST ಪೋಸ್ಟ್-ಕೋಯಾಂಟಂ ಸಹಿ ಮಾಪಕ) ಹೊರುತ್ತದೆ ನೀವು ಸ್ಥಳಾಂತರ ಮಾಡಬೇಕಿದ್ದಾಗ. ದ್ವಂದ್ವ-ಸಹಿ ಸಮಯವನ್ನು ಯೋಜಿಸಿ.ಸ್ಥಳೀಯ AI ಏಜೆಂಟ್ಗಳನ್ನು ಸೃಷ್ಟಿಸಲಾಗುತ್ತಿದೆ
ಅಸ್ವೀಕಾರ: ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ Co-op Translator ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯನ್ನು ಸಾಧಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ದಯವಿಟ್ಟು ಗಮನಿಸಿ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸಡ್ಡೆಗಳು ಇರಬಹುದು. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜು ಪ್ರಾಮಾಣಿಕ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದವನ್ನು ಬಳಸುವ ಮೂಲಕ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಗಳ ಅಥವಾ ತಪ್ಪು ವ್ಯಾಖ್ಯಾನಗಳ ಬಗ್ಗೆ ನಾವು ಹೊಣೆಗಾರರಲ್ಲ.