skipLink.label

Python SDK

Ishlaydi
Terminal window
pip install davirix

Python 3.10+ · sof-Python (py3-none-any) · Linux · macOS · Windows.

SDK nima uchun kerak

heading.anchorLabel

SDK shunchaki HTTP o’ram emas. U to’rt qoidani kod bilan majburlaydi — xom HTTP’da bu qoidalar qo’lda yoziladi va unutiladi:

Qoida SDK’da qanday
completed ≠ «bajarildi» .status va .verifiedayrim maydonlar
UNKNOWN istisno emas Holat sifatida qaytadi, raise qilinmaydi
idempotency_key majburiy Berilmasa tanadan avtomatik hosil qilinadi
Retry faqat retryable da APIError.retryable — qaror sizniki, lekin ma’lumot aniq
import os
from davirix import Davirix
dx = Davirix(
api_key=os.environ["DAVIRIX_KEY"],
tenant_id="bank-uz", # ixtiyoriy: har chaqiruvda ham berish mumkin
base_url=None, # standart: https://api.davirix.com
timeout=30.0,
)

Kontekst menejeri sifatida ham ishlaydi:

with Davirix(api_key=...) as dx:
n = dx.run(...)

Asosiy metodlar

heading.anchorLabel

run() — yuborish va kutish

heading.anchorLabel
n = dx.run(
agent_id="card-support",
input={"text": "Kartani bloklang, oxirgi 4 raqam 7731"},
tenant_id="bank-uz",
idempotency_key="buyurtma-2026-08-12-0001",
)

Ijro yakunlanguncha kutadi va natijani qaytaradi.

start() — yuborish, kutmaslik

heading.anchorLabel
n = dx.start(agent_id=..., input=...)
n.execution_id # "exe_0123..."

Uzoq ijro uchun: yuborasiz, keyin wait() yoki get() bilan olasiz.

wait() · get() · cancel()

heading.anchorLabel
n = dx.wait(execution_id) # yakunlanishini kutadi
n = dx.get(execution_id) # joriy holatni oladi
n = dx.cancel(execution_id) # bekor qiladi

Natijani o’qish

heading.anchorLabel
n.status # "completed" | "failed" | "cancelled" | ...
n.verified # ⚡ bool — AMAL manbadan tasdiqlandimi
n.unknown # bool — natija noma'lummi
n.operations # amallar ro'yxati
for op in n.operations:
op.capability_id # "sales.order.create"
op.status # "VERIFIED" | "ACKNOWLEDGED" | "UNKNOWN" | ...
op.resource_ref # manbadagi resurs havolasi

Idempotentlik

heading.anchorLabel

Kalit berilmasa SDK uni so’rov tanasidan hosil qiladi:

from davirix import derive_idempotency_key
key = derive_idempotency_key({"agent_id": "...", "input": {...}})

⚠ Avtomatik kalit ayni tana uchun ayni kalitni beradi. Agar sizning niyatingiz «har chaqiruv — yangi amal» bo’lsa, o’z kalitingizni bering. Batafsil: idempotentlik.

from davirix import APIError
try:
n = dx.run(...)
except APIError as e:
e.code # "rate_limited", "unauthorized", ...
e.retryable # bool
e.status_code # HTTP kodi
e.request_id # yordam so'raganda SHU kerak

Retry faqat retryable: True da. Boshqa holatda qayta urinish muammoni tuzatmaydi va dublikat xavfi tug’diradi.

Yordam so’raganda

heading.anchorLabel

Xato haqida xabar berganda execution_id va request_id ni yuboring — ular bilan butun zanjir tiklanadi.

⛔ Suhbat matnini yubormang: u bizga kerak emas va nol-saqlash rejimida saqlanmaydi ham.

Keyingi qadam

heading.anchorLabel