From 564ab9b1f5460388ac710536d824101717884c37 Mon Sep 17 00:00:00 2001 From: Sanjiv Das Date: Wed, 11 Sep 2024 09:57:46 -0700 Subject: [PATCH] Adding new slash command `/tools` Enabling use of custom tools (functions) with LLMs --- docs/source/_static/tools_correct_answer.png | Bin 0 -> 47424 bytes docs/source/_static/tools_wrong_answer.png | Bin 0 -> 97554 bytes docs/source/users/index.md | 6 + docs/source/users/tools.md | 77 ++++++ .../jupyter_ai/chat_handlers/__init__.py | 1 + .../jupyter_ai/chat_handlers/tools.py | 236 ++++++++++++++++++ packages/jupyter-ai/jupyter_ai/extension.py | 3 + 7 files changed, 323 insertions(+) create mode 100644 docs/source/_static/tools_correct_answer.png create mode 100644 docs/source/_static/tools_wrong_answer.png create mode 100644 docs/source/users/tools.md create mode 100644 packages/jupyter-ai/jupyter_ai/chat_handlers/tools.py diff --git a/docs/source/_static/tools_correct_answer.png b/docs/source/_static/tools_correct_answer.png new file mode 100644 index 0000000000000000000000000000000000000000..4f55f7f4a82a2d693d3811f022f5d75f88f95385 GIT binary patch literal 47424 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/tools_wrong_answer.png b/docs/source/_static/tools_wrong_answer.png new file mode 100644 index 0000000000000000000000000000000000000000..25372aab14b1d969bc10eb6097e3a22b0c3f363e GIT binary patch literal 97554 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 z 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 F{vU_%@*MyG literal 0 HcmV?d00001 diff --git a/docs/source/users/index.md b/docs/source/users/index.md index de42c56ec..db42265c9 100644 --- a/docs/source/users/index.md +++ b/docs/source/users/index.md @@ -600,10 +600,16 @@ contents of the failing cell. class="screenshot" style="max-width:65%" /> +### Using custom tools in chat + +In order to use your own custom tools in chat, create a tools file named `mytools.py` in the default directory. Then use the `/tools` command with your query. For details on how to build your custom tools file and usage of the `/tools` command, refer to [Using your custom tools library in the chat interface](tools.md). + + ### Additional chat commands To start a new conversation, use the `/clear` command. This will clear the chat panel and reset the model's memory. + ## The `%ai` and `%%ai` magic commands Jupyter AI can also be used in notebooks via Jupyter AI magics. This section diff --git a/docs/source/users/tools.md b/docs/source/users/tools.md new file mode 100644 index 000000000..b8c0af093 --- /dev/null +++ b/docs/source/users/tools.md @@ -0,0 +1,77 @@ +# Using your custom tools library in the chat interface + +In many situations LLMs will handle complex mathematical formulas quite well and return correct answers, but this is often not the case. Even for textual repsonses, using custom functions can constrain responses to formats and content that is more accurate and acceptable. + +Jupyter AI includes a slash command `/tools` that directs the LLM to use functions from a tools library that you provide. This is a single file titled `mytools.py` which may be stored in the default directory, that is, the one from which Jupyter is started. We provide an example of the tools file here, containing just three functions. Make sure to add the `@tool` decorator to each function and to import all packages that are not already installed within each function. The functions below are common financial formulas that are widely in use and you may expect that an LLM would be trained on these. While this is accurate, we will see that the LLM is unable to accurately execute the math in these formulas. + +``` +@tool +def BlackMertonScholes_Call(S: float, # current stock price + K: float, # exercise price of the option + T: float, # option maturity in years + d: float, # annualized dividend rate + r: float, # annualized risk free interest rate + v: float, # stock volatility + ): + """Black-Scholes-Merton option pricing model for call options""" + from scipy.stats import norm + d1 = (np.log(S/K) + (r-d+0.5*v**2)*T)/(v*np.sqrt(T)) + d2 = d1 - v*np.sqrt(T) + call_option_price = S*np.exp(-d*T)*norm.cdf(d1) - K*np.exp(-r*T)*norm.cdf(d2) + return call_option_price + +@tool +def BlackMertonScholes_Put(S: float, # current stock price + K: float, # exercise price of the option + T: float, # option maturity in years + d: float, # annualized dividend rate + r: float, # annualized risk free interest rate + v: float, # stock volatility + ): + """Black-Scholes-Merton option pricing model for put options""" + from scipy.stats import norm + d1 = (np.log(S/K) + (r-d+0.5*v**2)*T)/(v*np.sqrt(T)) + d2 = d1 - v*np.sqrt(T) + put_option_price = K*np.exp(-r*T)*norm.cdf(-d2) - S*np.exp(-d*T)*norm.cdf(-d1) + return put_option_price + +@tool +def calculate_monthly_payment(principal, annual_interest_rate, loan_term_years): + """ + Calculate the monthly mortgage payment. + Args: + principal (float): The principal amount of the loan. + annual_interest_rate (float): The annual interest rate as a decimal (e.g., 0.06 for 6%). + loan_term_years (int): The loan term in years. + Returns: + float: The monthly mortgage payment. + """ + import math + # Convert annual interest rate to monthly interest rate + monthly_interest_rate = annual_interest_rate / 12 + # Calculate the number of monthly payments + num_payments = loan_term_years * 12 + # Calculate the monthly payment using the annuity formula + monthly_payment = (principal * monthly_interest_rate) / (1 - math.pow(1 + monthly_interest_rate, -num_payments)) + return monthly_payment +``` + +Each function contains the `@tool` decorator and the required imports. Note also the comment string that describes what each tool does. This will help direct the LLM to relevant tool. Providing sufficient guiding comments in the function is helpful in the form of comment strings, variable annotations, and expolicit argument comments, example of which are shown in the code above. For example, default values in comments will be used by the LLM if the user forgets to provide them (for example, see the explicit mention of a 6% interest rate in `calculate_monthly_payment` function above). + +When the `/tools` command is used, Jupyter AI will bind the custom tools file to the LLM currently in use and build a `LangGraph` (https://langchain-ai.github.io/langgraph/). It will use this graph to respond to the query and use the appropriate tools, if available. + +As an example, submit this query in the chat interface without using tools: "What is the price of a put option where the stock price is 100, the exercise price is 101, the time to maturity is 1 year, the risk free rate is 3%, the dividend rate is zero, and the stock volatility is 20%?" The correct answer to this query is $6.93. However, though the LLM returns the correct formula, it computes the answer incorrectly: + +Incorrect use of the Black-Merton-Scholes formula for pricing a put option. + +Next, use the `/tools` command with the same query to get the correct answer: + +Incorrect use of the Black-Merton-Scholes formula for pricing a put option. + +You can try the other tools in this example or build your own custom tools file to experiment with this feature. \ No newline at end of file diff --git a/packages/jupyter-ai/jupyter_ai/chat_handlers/__init__.py b/packages/jupyter-ai/jupyter_ai/chat_handlers/__init__.py index a8fe9eb50..974365718 100644 --- a/packages/jupyter-ai/jupyter_ai/chat_handlers/__init__.py +++ b/packages/jupyter-ai/jupyter_ai/chat_handlers/__init__.py @@ -7,3 +7,4 @@ from .generate import GenerateChatHandler from .help import HelpChatHandler from .learn import LearnChatHandler +from .tools import ToolsChatHandler diff --git a/packages/jupyter-ai/jupyter_ai/chat_handlers/tools.py b/packages/jupyter-ai/jupyter_ai/chat_handlers/tools.py new file mode 100644 index 000000000..9b74cbc65 --- /dev/null +++ b/packages/jupyter-ai/jupyter_ai/chat_handlers/tools.py @@ -0,0 +1,236 @@ +##### TO DO ##### +# - icon for /tools +# - Where to put the mytools.py file? +# - Pass tools file location on startup, or in chat, or keep one file, or handle multiple tool files. +# - Handling the different providers (Chat*) and models (model_id) +# - To integrate with chat history and memory or not? +# - How to suppress the problem with % sign messing up output? +# - Show full exchange or only the answer? +# - Error handling +# - Documentation +# - What's the best way to add this to magics? +# - Long term: Using the more advanced features of LangGraph, Agents, Multi-agentic workflows, etc. + + +import argparse +from typing import Dict, Type + +from jupyter_ai.models import HumanChatMessage +from jupyter_ai_magics.providers import BaseProvider +from langchain.chains import ConversationalRetrievalChain +from langchain.memory import ConversationBufferWindowMemory +from langchain_core.prompts import PromptTemplate +from langchain.chains import LLMChain + +from .base import BaseChatHandler, SlashCommandRoutingType + +# LangGraph imports for using tools +import os +import re +import numpy as np +import math +from typing import Literal + +from langchain_core.messages import AIMessage +from langchain_core.tools import tool +from langgraph.prebuilt import ToolNode +from langgraph.graph import StateGraph, MessagesState + +# Chat Providers (add more as needed) +from langchain_aws import ChatBedrock +from langchain_ollama import ChatOllama +from langchain_anthropic import ChatAnthropic +from langchain_openai import ChatOpenAI, AzureChatOpenAI +from langchain_cohere import ChatCohere +from langchain_google_genai import ChatGoogleGenerativeAI + + +PROMPT_TEMPLATE = """Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question. + +Chat History: +{chat_history} +Follow Up Input: {question} +Standalone question: +Format the answer to be as pretty as possible. +""" +CONDENSE_PROMPT = PromptTemplate.from_template(PROMPT_TEMPLATE) + + +class ToolsChatHandler(BaseChatHandler): + """Processes messages prefixed with /tools. This actor will + bind a .py collection of tools to the LLM and + build a computational graph to direct queries to tools + that apply to the prompt. If there is no appropriate tool, + the LLM will default to a standard chat response from the LLM + without using tools. + """ + + id = "tools" + name = "Use tools with LLM" + help = "Ask a question that uses your custom tools" + routing_type = SlashCommandRoutingType(slash_id="tools") + + uses_llm = True + + # def __init__(self, retriever, *args, **kwargs): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # self._retriever = retriever + self.parser.prog = "/tools" + self.parser.add_argument("query", nargs=argparse.REMAINDER) + self.tools_file_path = os.path.join(self.output_dir, 'mytools.py') # Maybe pass as parameter? + self.chat_provider = "" # Default, updated with function `setChatProvider` + + + # https://python.langchain.com/v0.2/docs/integrations/platforms/ + def setChatProvider(self, provider): # For selecting the model to bind tools with + try: + if "bedrock" in provider.name.lower(): + chat_provider = "ChatBedrock" + elif "ollama" in provider.name.lower(): + chat_provider = "ChatOllama" + elif "anthropic" in provider.name.lower(): + chat_provider = "ChatAnthropic" + elif "azure" in provider.name.lower(): + chat_provider = "AzureChatOpenAI" + elif "openai" in provider.name.lower(): + chat_provider = "ChatOpenAI" + elif "cohere" in provider.name.lower(): + chat_provider = "ChatCohere" + elif "google" in provider.name.lower(): + chat_provider = "ChatGoogleGenerativeAI" + return chat_provider + except Exception as e: + self.log.error(e) + response = """The related chat provider is not supported.""" + self.reply(response) + + + def create_llm_chain( + self, provider: Type[BaseProvider], provider_params: Dict[str, str] + ): + unified_parameters = { + **provider_params, + **(self.get_model_parameters(provider, provider_params)), + } + llm = provider(**unified_parameters) + self.chat_provider = self.setChatProvider(provider) + self.llm = llm + memory = ConversationBufferWindowMemory( + memory_key="chat_history", return_messages=True, k=2 + ) + self.llm_chain = LLMChain(llm=self.llm, + prompt=CONDENSE_PROMPT, + memory=memory, + verbose=False) + + + # #### TOOLS FOR USE WITH LANGGRAPH ##### + """ + Bind tools to LLM and provide chat functionality. + Call: + /tools + """ + + def conditional_continue(state: MessagesState) -> Literal["tools", "__end__"]: + messages = state["messages"] + last_message = messages[-1] + if last_message.tool_calls: + return "tools" + return "__end__" + + def get_tool_names(tools_file_path): + """ + Read a file and extract the function names following the @tool decorator. + Args: + file_path (str): The path to the file. + Returns: + list: A list of function names. + """ + with open(tools_file_path, 'r') as file: + content = file.read() + # Use a regular expression to find the function names + tool_pattern = r'@tool\n\s*def\s+(\w+)' + tools = re.findall(tool_pattern, content) + return tools + + def toolChat(self, query): + print("TOOL CHAT", query) + for chunk in self.app.stream({"messages": [("human", query)]}, stream_mode="values"): + response = chunk["messages"][-1].pretty_print() + return response + + + ##### MAIN FUNCTION ##### + def useLLMwithTools(self, chat_provider, model_name, tools_file_path, query): + + def call_tool(state: MessagesState): + messages = state["messages"] + response = self.model_with_tools.invoke(messages) + return {"messages": [response]} + + # Read in the tools file + file_path = tools_file_path + with open(file_path) as file: + exec(file.read()) + + # Get tool names and create node with tools + tools = ToolsChatHandler.get_tool_names(file_path) + tools = [eval(j) for j in tools] + tool_node = ToolNode(tools) + + # Bind tools to LLM + if chat_provider=="ChatBedrock": + self.model_with_tools = eval(chat_provider)(model_id=model_name, + model_kwargs={"temperature": 0}).bind_tools(tools) + else: + self.model_with_tools = eval(chat_provider)(model=model_name, temperature=0).bind_tools(tools) + + # Initialize graph + agentic_workflow = StateGraph(MessagesState) + # Define the agent and tool nodes we will cycle between + agentic_workflow.add_node("agent", call_tool) + agentic_workflow.add_node("tools", tool_node) + # Add edges to the graph + agentic_workflow.add_edge("__start__", "agent") + agentic_workflow.add_conditional_edges("agent", ToolsChatHandler.conditional_continue) + agentic_workflow.add_edge("tools", "agent") + # Compile graph + app = agentic_workflow.compile() + + # Run query + # res = ToolsChatHandler.toolChat(self, query) + res = app.invoke({"messages": query}) + return res["messages"][-1].content + + + async def process_message(self, message: HumanChatMessage): + args = self.parse_args(message) + if args is None: + return + query = " ".join(args.query) + if not query: + self.reply(f"{self.parser.format_usage()}", message) + return + + self.get_llm_chain() + + try: + with self.pending("Using LLM with tools ..."): + # result = await self.llm_chain.acall({"question": query}) + response = self.useLLMwithTools(self.chat_provider, + self.llm.model_id, + self.tools_file_path, + query) + self.reply(response, message) + except Exception as e: + self.log.error(e) + response = """Sorry, tool usage failed. + Either (i) this LLM does not accept tools, (ii) there an error in + the custom tools file, (iii) you may also want to check the + location of the tools file, or (iv) you may need to install the + `langchain_` package. (v) Finally, check that you have + authorized access to the LLM.""" + self.reply(response, message) + diff --git a/packages/jupyter-ai/jupyter_ai/extension.py b/packages/jupyter-ai/jupyter_ai/extension.py index 78c4dfefa..781c8c94f 100644 --- a/packages/jupyter-ai/jupyter_ai/extension.py +++ b/packages/jupyter-ai/jupyter_ai/extension.py @@ -21,6 +21,7 @@ GenerateChatHandler, HelpChatHandler, LearnChatHandler, + ToolsChatHandler, ) from .completions.handlers import DefaultInlineCompletionHandler from .config_manager import ConfigManager @@ -315,6 +316,7 @@ def initialize_settings(self): export_chat_handler = ExportChatHandler(**chat_handler_kwargs) fix_chat_handler = FixChatHandler(**chat_handler_kwargs) + tools_chat_handler = ToolsChatHandler(**chat_handler_kwargs) chat_handlers["default"] = default_chat_handler chat_handlers["/ask"] = ask_chat_handler @@ -323,6 +325,7 @@ def initialize_settings(self): chat_handlers["/learn"] = learn_chat_handler chat_handlers["/export"] = export_chat_handler chat_handlers["/fix"] = fix_chat_handler + chat_handlers["/tools"] = tools_chat_handler slash_command_pattern = r"^[a-zA-Z0-9_]+$" for chat_handler_ep in chat_handler_eps: