Tekoälyagentit · Oppitunti

Tulosten palauttaminen mallille

Muotoilkaa työkalujen tulosteet tool-roolin viesteiksi, jotta malli voi lukea ne ja jatkaa keskustelua.

Oppitunti 4/413 vaihetta

Tulosten palauttaminen mallille on ilmainen Tekoälyagentit-oppitunti CoddyKitissä. Tämä on oppitunti 4/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.

Työkalutulosviesti

Työkalun suorittamisen jälkeen kerrotte mallille tuloksen työkaluvistillä:

messages.append({
    'role': 'tool',
    'tool_call_id': tool_call.id,    # MUST match the assistant's tool_call.id
    'content': json.dumps(result)
})

Sisällön tulee olla merkkijono

OpenAI odottaa, että content on merkkijono. Muodostakaa objekteista sarjallistettu esitys json.dumps-funktiolla:

# Bad — will error
messages.append({'role': 'tool', 'tool_call_id': id, 'content': {'temp': 18}})

# Good
messages.append({'role': 'tool', 'tool_call_id': id, 'content': '{"temp": 18}'})

Anthropicin muoto

Anthropic käyttää käyttäjäviestin sisällä olevaa sisältölohkoa:

messages.append({
    'role': 'user',
    'content': [{
        'type': 'tool_result',
        'tool_use_id': 'toolu_abc',
        'content': json.dumps(result)
    }]
})

Virheiden palauttaminen

Jos työkalu epäonnistui, palauttakaa virhe — älkää väittäkö sen onnistuneen. Malli voi palautua tilanteesta:

try:
    result = run_tool(...)
    content = json.dumps({'ok': True, 'data': result})
except Exception as e:
    content = json.dumps({'ok': False, 'error': str(e)})

messages.append({'role': 'tool', 'tool_call_id': id, 'content': content})

Usean tuloksen malli

Rinnakkaisissa työkalukutsuissa lisätkää kukin tulos vastaavan tunnuksensa kanssa:

for tc in message.tool_calls:
    result = dispatch(tc)
    messages.append({
        'role': 'tool',
        'tool_call_id': tc.id,
        'content': json.dumps(result)
    })

Suuret tulokset: tiivistäminen

Jos työkalu palauttaa 100 kilotavua HTML:ää, sen kaiken lähettäminen mallille kuluttaa tokeneita ja hajottaa tarkkaavaisuutta. Tiivistäkää tai katkaiskaa tulos ensin:

def truncate(text, max_chars=4000):
    if len(text) <= max_chars:
        return text
    return text[:max_chars] + f'\n...[truncated, {len(text)-max_chars} more chars]'

sample = "x" * 4500
result = truncate(sample, max_chars=50)
print(result)

Aina sama skeema

Vaikka tulokset vaihtelevat (onnistuminen / virhe / ei löytynyt), pitäkää tulosskeema vakaana. Malli toimii luotettavammin, kun rakenteet pysyvät yhdenmukaisina:

from typing import TypedDict, Literal, Optional, Any

class ToolResult(TypedDict):
    status: Literal['ok', 'not_found', 'error']
    data: Optional[Any]
    error: Optional[str]

def make_result(status, data=None, error=None) -> ToolResult:
    return {'status': status, 'data': data, 'error': error}

print(make_result('ok', data={'temp': 72}))
print(make_result('not_found', error='city not found'))

Metatietovihjeiden lisääminen

Auttaa mallia tulkitsemaan tuloksia lisäämällä sisältöön vihjeitä:

content = json.dumps({
    'data': rows,
    'note': 'Returned 50 rows (most recent first). There may be more matches.'
})

Binääridata

Älkää koodatko suuria binäärimöykkyjä base64-muotoon työkaluvistissä. Tallentakaa ne sen sijaan tallennustilaan ja palauttakaa URL-osoite tai tunnus:

result = {
    'image_path': '/tmp/chart-abc.png',
    'thumbnail_url': 'https://...',
    'caption': 'Sales by quarter, 2024'
}
for k, v in result.items():
    print(f"{k}: {v}")

Mallin kutsuminen uudelleen

Kun olette lisänneet kaikki työkalutulokset, kutsukaa mallia uudelleen — se joko tuottaa lopullisen vastauksen tai kutsuu lisää työkaluja:

class Msg:
    def __init__(self, tool_calls=None, content=None):
        self.tool_calls = tool_calls or []
        self.content = content

class ToolCall:
    def __init__(self, name, args):
        self.name = name
        self.args = args

def call_model(messages, tools):
    if len(messages) < 4:
        return Msg(tool_calls=[ToolCall('get_weather', {'city': 'Paris'})])
    return Msg(content='It is sunny in Paris.')

messages = [{'role': 'user', 'content': 'Weather in Paris?'}]
tools = ['get_weather']
message = call_model(messages, tools)

while message.tool_calls:
    for tc in message.tool_calls:
        result = f'Result of {tc.name}({tc.args})'
        messages.append({'role': 'tool', 'name': tc.name, 'content': result})
        print('Tool call:', tc.name, '->', result)
    message = call_model(messages, tools)

print('Final answer:', message.content)

Työkalutulosten auditointi

Kirjatkaa lokiin jokainen (tool_call_id, args, result) vianmääritystä varten. Kun agentti tekee jotain odottamatonta, työkalutulosloki on ensimmäinen paikka, josta kannattaa etsiä syytä.

Työkalutuloksen muoto

Mihin työkaluvistin tool_call_id viittaa?

Kertaus

Hallitsette nyt työkalukutsun koko edestakaisen prosessin. Seuraava kurssi käsittelee muistia, joka on agenttien kolmas pilari.

Aloita maksutta

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 ”Tulosten palauttaminen mallille” ilmainen?

Kyllä – oppitunnin ”Tulosten palauttaminen mallille” 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 ”Tulosten palauttaminen mallille”?

Muotoilkaa työkalujen tulosteet tool-roolin viesteiksi, jotta malli voi lukea ne ja jatkaa keskustelua. 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 4/4.

Kuinka kauan ”Tulosten palauttaminen mallille”-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

  1. Miten funktion kutsuminen toimii
  2. Työkalujen skeemojen määrittäminen (JSON Schema)
  3. Työkalujen valitseminen ajonaikaisesti
  4. Tulosten palauttaminen mallille
← Takaisin: Tekoälyagentit