Files
run-llama--llama_index/docs/examples/agent/agent_with_structured_output.ipynb
wehub-resource-sync a0c8464e58
Build Package / build (ubuntu-latest) (push) Failing after 1s
CodeQL / Analyze (python) (push) Failing after 1s
Core Typecheck / core-typecheck (push) Failing after 1s
Linting / lint (push) Failing after 1s
llama-dev tests / test-llama-dev (push) Failing after 1s
Publish Sub-Package to PyPI if Needed / publish_subpackage_if_needed (push) Has been skipped
Sync Docs to Developer Hub / sync-docs (push) Failing after 0s
Build Package / build (windows-latest) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:26:52 +08:00

150 lines
3.2 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Agents with Structured Outputs\n",
"\n",
"When you run your agent or multi-agent framework, you might want it to output the result in a specific format. In this notebook, we will see a simple example of how to apply this to a FunctionAgent!🦙🚀"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's first install the needed dependencies"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"! pip install llama-index"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from getpass import getpass\n",
"import os\n",
"\n",
"os.environ[\"OPENAI_API_KEY\"] = getpass()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's now define our structured output format\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from pydantic import BaseModel, Field\n",
"\n",
"\n",
"class MathResult(BaseModel):\n",
" operation: str = Field(description=\"The operation that has been performed\")\n",
" result: int = Field(description=\"Result of the operation\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And a very simple calculator agent"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from llama_index.llms.openai import OpenAI\n",
"from llama_index.core.agent.workflow import FunctionAgent\n",
"\n",
"llm = OpenAI(model=\"gpt-4.1\")\n",
"\n",
"\n",
"def add(x: int, y: int):\n",
" \"\"\"Add two numbers\"\"\"\n",
" return x + y\n",
"\n",
"\n",
"def multiply(x: int, y: int):\n",
" \"\"\"Multiply two numbers\"\"\"\n",
" return x * y\n",
"\n",
"\n",
"agent = FunctionAgent(\n",
" llm=llm,\n",
" output_cls=MathResult,\n",
" tools=[add, multiply],\n",
" system_prompt=\"You are a calculator agent that can add or multiply two numbers by calling tools\",\n",
" name=\"calculator\",\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's now run the agent"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"response = await agent.run(\"What is the result of 10 multiplied by 4?\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, we can get the structured output"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# print the structured output as a plain dictionary\n",
"print(response.structured_response)\n",
"# print the structured output as a Pydantic model\n",
"print(response.get_pydantic_model(MathResult))"
]
}
],
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}