Idempotentit työkalut ja sivuvaikutukset
Agentti saattaa yrittää uudelleen – suunnitelkaa työkalut niin, ettei niiden kutsuminen kahdesti aiheuta kaksinkertaista veloitusta tai sähköpostia.
Idempotentit työkalut ja sivuvaikutukset on ilmainen Tekoälyagentit-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tekoälyagentit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.
Miksi idempotenssi on tärkeää
Agentin silmukka saattaa yrittää uudelleen. Jos työkalu lähettää sähköpostin tai veloittaa luottokorttia, uudelleenyritys toistaa toiminnon. Idempotenssi tekee toiminnosta ”tee X uudelleen” tyhjäkäynnin, jos X on jo tapahtunut.
Mitä idempotenssi tarkoittaa?
Toiminto on idempotentti, jos sen kutsuminen N kertaa tuottaa saman vaikutuksen kuin sen kutsuminen kerran. Esimerkkejä:
- ”Aseta käyttäjän tilaksi aktiivinen” — idempotentti (tilan asettaminen uudelleen aktiiviseksi ei tee mitään)
- ”Kasvata laskuria yhdellä” — EI ole idempotentti (jokainen kutsu lisää yhden)
Idempotenssiavaimet
Käyttäkää idempotenssiavaimia ei-idempotenteissa toiminnoissa, kuten maksuissa ja sähköposteissa:
import uuid
def create_payment(amount, idempotency_key):
# Stripe accepts this header — returns the existing payment if key was used
return stripe.Charge.create(
amount=amount,
currency='usd',
source=token,
idempotency_key=idempotency_key
)Avainten luominen tarkoitteen perusteella
Käyttäkää hajautetta yhdistelmästä (tool_name, arguments, run_id), jotta samanlaiset uudelleenyritykset käyttävät samaa avainta:
import hashlib, json
def intent_key(tool_name, args, run_id):
payload = json.dumps([tool_name, args, run_id], sort_keys=True)
return hashlib.sha256(payload.encode()).hexdigest()
print(intent_key('transfer_money', {'to': 'acc2', 'amount': 100}, 'run-1'))
Sivuvaikutusten luettelo
Luetteloikaa, millä työkaluilla on sivuvaikutuksia:
- SEND-sähköposti / SMS
- CHARGE / refund
- CREATE / DELETE-tietokantarivit
- POST ulkoisiin tilaa muuttaviin rajapintoihin
Vain lukuun tarkoitetut työkalut ovat luonnostaan idempotentteja. Keskittykää kirjoittaviin toimintoihin.
Sivuvaikutustyökalujen kääriminen
Lisätkää idempotenssikerros työkalun toteutukseen:
def send_email(to, subject, body, run_id):
key = intent_key('send_email', {'to': to, 'subject': subject, 'body': body}, run_id)
if redis.set(f'sent:{key}', 1, nx=True, ex=86400):
smtp.send(to, subject, body)
return {'sent': True}
return {'sent': False, 'reason': 'already-sent'}Vahvistus ennen toiminnon suorittamista
Lisätkää suuren riskin toiminnoille vahvistusvaihe:
def transfer_money(from_acc, to_acc, amount, confirmed=False):
if not confirmed:
return {'pending': True, 'msg': 'Call again with confirmed=True to proceed.'}
return {'pending': False, 'msg': f'Transferred {amount} from {from_acc} to {to_acc}.'}
print(transfer_money('acc1', 'acc2', 100))
print(transfer_money('acc1', 'acc2', 100, confirmed=True))
Kaksivaiheiset työkalut
Jakakaa työkalut ”luonnos”- ja ”vahvista”-vaiheisiin:
def draft_email(to, subject, body):
draft_id = save_draft(to, subject, body)
return {'draft_id': draft_id, 'preview': body[:200]}
def send_draft(draft_id):
return smtp.send(load_draft(draft_id))Kompensoivat toiminnot
Jos sivuvaikutusta ei voi välttää, määritelkää ”undo”-työkalu:
def refund_payment(payment_id):
return stripe.Refund.create(payment=payment_id)
# Now an erroneous create_payment can be undone.Auditointilokit
Jokaisen sivuvaikutuksia aiheuttavan työkalun ON kirjattava: kuka käynnisti sen, mitkä argumentit annettiin, milloin se tapahtui ja mikä oli tulos. Käyttäkää rakenteisia lokeja, joita voi myöhemmin hakea.
Suorituskertakohtainen sivuvaikutusbudjetti
Rajaatte sivuvaikutusten määrän suorituskerroittain turvaverkoksi:
if state.side_effect_count >= 5:
return {'error': 'Side-effect budget exhausted for this run.'}Kuiva-ajotila
Kehityksen aikana hyödyllinen tila: työkalut kirjaavat, mitä ne TEKISIVÄT, mutta eivät suorita toimintoa oikeasti:
import os
os.environ['DRY_RUN'] = '1'
DRY_RUN = os.getenv('DRY_RUN') == '1'
def send_email(to, subject, body):
if DRY_RUN:
print(f'would send email to {to}')
return {'sent': False, 'dry_run': True}
print(f'sending email to {to}')
return {'sent': True, 'dry_run': False}
result = send_email('user@example.com', 'Hi', 'Hello there')
print(result)
Määritelmä
Mitä ”idempotentti” tarkoittaa työkalun yhteydessä?
Yhteenveto
Tunnistakaa sivuvaikutukset. Käyttäkää idempotenssiavaimia. Rakentakaa kaksivaiheisia työkaluja ja kompensoivia toimintoja. Auditoikaa kaikki. Käyttäkää kehityksessä kuiva-ajoa.
Opi Tekoälyagentit tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 60
- Oppitunnit
- 239
Usein kysytyt kysymykset
Onko oppitunti ”Idempotentit työkalut ja sivuvaikutukset” ilmainen?
Kyllä – oppitunnin ”Idempotentit työkalut ja sivuvaikutukset” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tekoälyagentit-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Idempotentit työkalut ja sivuvaikutukset”?
Agentti saattaa yrittää uudelleen – suunnitelkaa työkalut niin, ettei niiden kutsuminen kahdesti aiheuta kaksinkertaista veloitusta tai sähköpostia. Harjoittelet Tekoälyagentit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Tekoälyagentit-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Idempotentit työkalut ja sivuvaikutukset”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyagentit-oppitunnilla?
Kyllä. Jokainen Tekoälyagentit-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Idempotentit työkalut ja sivuvaikutukset
- Uudelleenyritykset eksponentiaalisella peruutuksella
- Aikakatkaisut ja sulakkeet
- Työkalujen tulosteiden validointi (Pydantic)