mirror of
				https://github.com/hwchase17/langchain.git
				synced 2025-10-31 07:41:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			143 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| {
 | |
|  "cells": [
 | |
|   {
 | |
|    "cell_type": "markdown",
 | |
|    "id": "87455ddb",
 | |
|    "metadata": {},
 | |
|    "source": [
 | |
|     "# Multi Input Tools\n",
 | |
|     "\n",
 | |
|     "This notebook shows how to use a tool that requires multiple inputs with an agent.\n",
 | |
|     "\n",
 | |
|     "The difficulty in doing so comes from the fact that an agent decides it's next step from a language model, which outputs a string. So if that step requires multiple inputs, they need to be parsed from that. Therefor, the currently supported way to do this is write a smaller wrapper function that parses that a string into multiple inputs.\n",
 | |
|     "\n",
 | |
|     "For a concrete example, let's work on giving an agent access to a multiplication function, which takes as input two integers. In order to use this, we will tell the agent to generate the \"Action Input\" as a comma separated list of length two. We will then write a thin wrapper that takes a string, splits it into two around a comma, and passes both parsed sides as integers to the multiplication function."
 | |
|    ]
 | |
|   },
 | |
|   {
 | |
|    "cell_type": "code",
 | |
|    "execution_count": 1,
 | |
|    "id": "291149b6",
 | |
|    "metadata": {},
 | |
|    "outputs": [],
 | |
|    "source": [
 | |
|     "from langchain.llms import OpenAI\n",
 | |
|     "from langchain.agents import initialize_agent, Tool"
 | |
|    ]
 | |
|   },
 | |
|   {
 | |
|    "cell_type": "markdown",
 | |
|    "id": "71b6bead",
 | |
|    "metadata": {},
 | |
|    "source": [
 | |
|     "Here is the multiplication function, as well as a wrapper to parse a string as input."
 | |
|    ]
 | |
|   },
 | |
|   {
 | |
|    "cell_type": "code",
 | |
|    "execution_count": 2,
 | |
|    "id": "f0b82020",
 | |
|    "metadata": {},
 | |
|    "outputs": [],
 | |
|    "source": [
 | |
|     "def multiplier(a, b):\n",
 | |
|     "    return a * b\n",
 | |
|     "\n",
 | |
|     "def parsing_multiplier(string):\n",
 | |
|     "    a, b = string.split(\",\")\n",
 | |
|     "    return multiplier(int(a), int(b))"
 | |
|    ]
 | |
|   },
 | |
|   {
 | |
|    "cell_type": "code",
 | |
|    "execution_count": 3,
 | |
|    "id": "6db1d43f",
 | |
|    "metadata": {},
 | |
|    "outputs": [],
 | |
|    "source": [
 | |
|     "llm = OpenAI(temperature=0)\n",
 | |
|     "tools = [\n",
 | |
|     "    Tool(\n",
 | |
|     "        name = \"Multiplier\",\n",
 | |
|     "        func=parsing_multiplier,\n",
 | |
|     "        description=\"useful for when you need to multiply two numbers together. The input to this tool should be a comma separated list of numbers of length two, representing the two numbers you want to multiply together. For example, `1,2` would be the input if you wanted to multiply 1 by 2.\"\n",
 | |
|     "    )\n",
 | |
|     "]\n",
 | |
|     "mrkl = initialize_agent(tools, llm, agent=\"zero-shot-react-description\", verbose=True)"
 | |
|    ]
 | |
|   },
 | |
|   {
 | |
|    "cell_type": "code",
 | |
|    "execution_count": 4,
 | |
|    "id": "aa25d0ca",
 | |
|    "metadata": {},
 | |
|    "outputs": [
 | |
|     {
 | |
|      "name": "stdout",
 | |
|      "output_type": "stream",
 | |
|      "text": [
 | |
|       "\n",
 | |
|       "\n",
 | |
|       "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
 | |
|       "\u001b[32;1m\u001b[1;3m I need to multiply two numbers\n",
 | |
|       "Action: Multiplier\n",
 | |
|       "Action Input: 3,4\u001b[0m\n",
 | |
|       "Observation: \u001b[36;1m\u001b[1;3m12\u001b[0m\n",
 | |
|       "Thought:\u001b[32;1m\u001b[1;3m I now know the final answer\n",
 | |
|       "Final Answer: 3 times 4 is 12\u001b[0m\n",
 | |
|       "\n",
 | |
|       "\u001b[1m> Finished chain.\u001b[0m\n"
 | |
|      ]
 | |
|     },
 | |
|     {
 | |
|      "data": {
 | |
|       "text/plain": [
 | |
|        "'3 times 4 is 12'"
 | |
|       ]
 | |
|      },
 | |
|      "execution_count": 4,
 | |
|      "metadata": {},
 | |
|      "output_type": "execute_result"
 | |
|     }
 | |
|    ],
 | |
|    "source": [
 | |
|     "mrkl.run(\"What is 3 times 4\")"
 | |
|    ]
 | |
|   },
 | |
|   {
 | |
|    "cell_type": "code",
 | |
|    "execution_count": null,
 | |
|    "id": "7ea340c0",
 | |
|    "metadata": {},
 | |
|    "outputs": [],
 | |
|    "source": []
 | |
|   }
 | |
|  ],
 | |
|  "metadata": {
 | |
|   "kernelspec": {
 | |
|    "display_name": "Python 3 (ipykernel)",
 | |
|    "language": "python",
 | |
|    "name": "python3"
 | |
|   },
 | |
|   "language_info": {
 | |
|    "codemirror_mode": {
 | |
|     "name": "ipython",
 | |
|     "version": 3
 | |
|    },
 | |
|    "file_extension": ".py",
 | |
|    "mimetype": "text/x-python",
 | |
|    "name": "python",
 | |
|    "nbconvert_exporter": "python",
 | |
|    "pygments_lexer": "ipython3",
 | |
|    "version": "3.9.1"
 | |
|   },
 | |
|   "vscode": {
 | |
|    "interpreter": {
 | |
|     "hash": "b1677b440931f40d89ef8be7bf03acb108ce003de0ac9b18e8d43753ea2e7103"
 | |
|    }
 | |
|   }
 | |
|  },
 | |
|  "nbformat": 4,
 | |
|  "nbformat_minor": 5
 | |
| }
 |