Tulosten palauttaminen mallille
Muotoilkaa työkalujen tulosteet tool-roolin viesteiksi, jotta malli voi lukea ne ja jatkaa keskustelua.
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.
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
- Miten funktion kutsuminen toimii
- Työkalujen skeemojen määrittäminen (JSON Schema)
- Työkalujen valitseminen ajonaikaisesti
- Tulosten palauttaminen mallille