45 lines
857 B
Markdown
45 lines
857 B
Markdown
---
|
|
layout: default
|
|
---
|
|
|
|
# Binding Tools al Modelo
|
|
|
|
<div class="text-sm mt-8">
|
|
|
|
<v-click>
|
|
|
|
<div class="mb-6">
|
|
|
|
Puedes vincular tools directamente al modelo con `.bindTools()`
|
|
|
|
</div>
|
|
|
|
</v-click>
|
|
|
|
<v-click>
|
|
|
|
```typescript
|
|
import { ChatOpenAI } from "@langchain/openai";
|
|
import { tool } from "@langchain/core/tools";
|
|
import { z } from "zod";
|
|
|
|
const weatherTool = tool(
|
|
async ({ location }) => `El tiempo en ${location} es soleado`,
|
|
{
|
|
name: "get_weather",
|
|
description: "Obtiene el tiempo de una ubicación",
|
|
schema: z.object({ location: z.string() }),
|
|
}
|
|
);
|
|
|
|
const model = new ChatOpenAI({ model: "gpt-4.1-mini" });
|
|
const modelWithTools = model.bindTools([weatherTool]);
|
|
|
|
const response = await modelWithTools.invoke("¿Qué tiempo hace en Madrid?");
|
|
console.log(response.tool_calls); // Tool que el LLM decidió usar
|
|
```
|
|
|
|
</v-click>
|
|
|
|
</div>
|