{ "cells": [ { "cell_type": "markdown", "id": "fbaba4a9", "metadata": {}, "source": [ "# Quick Start\n", "\n", "Build a tool-calling chat widget for notebooks using LangChain. The widget is an `anywidget` + React UI, so it plays nicely with other Jupyter widgets.\n", "\n", "## 1) Install\n", "\n", "```console\n", "pip install langchain-widget\n", "```\n", "\n", "If you don't already have JupyterLab:\n", "\n", "```console\n", "pip install jupyterlab\n", "```\n", "\n", "## 2) Configure your model\n", "\n", "Set the API key for your provider. For OpenAI:\n", "\n", "```console\n", "export OPENAI_API_KEY=\"...\"\n", "```\n", "\n", "Tip: you can also use a local `.env` file and `python-dotenv` (the examples below call `load_dotenv()`):\n", "\n", "```console\n", "OPENAI_API_KEY=...\n", "```\n", "\n", "## 3) Create a widget" ] }, { "cell_type": "code", "execution_count": 3, "id": "0a34ec55", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "bbbacd462f5048d4a4cdf6761a4bb158", "version_major": 2, "version_minor": 1 }, "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from langchain_widget import LangChainWidget\n", "from langchain_core.tools import tool\n", "from langchain_openai import ChatOpenAI\n", "from dotenv import load_dotenv\n", "\n", "load_dotenv()\n", "\n", "chat_model = ChatOpenAI(model=\"gpt-4o-mini\")\n", "\n", "@tool\n", "def add(a: int, b: int) -> int:\n", " \"Add two integers.\"\n", " return a + b\n", "\n", "w = LangChainWidget(\n", " chat_model=chat_model,\n", " tools=[add],\n", " system_prompt=\"You are a helpful assistant.\",\n", ")\n", "w" ] }, { "cell_type": "markdown", "id": "d203daa5", "metadata": {}, "source": [ "## 4) Pass context from your notebook\n", "\n", "You can inject extra context from your analysis or other widgets (selection state, current parameters, computed results, etc.)." ] }, { "cell_type": "code", "execution_count": 4, "id": "66291a6e", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "bbbacd462f5048d4a4cdf6761a4bb158", "version_major": 2, "version_minor": 1 }, "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w.add_context(title=\"Notebook context\", content=\"Selected atoms: [0, 3, 7]\")\n", "w" ] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 5 }