{ "cells": [ { "cell_type": "markdown", "id": "5125a1e3", "metadata": {}, "source": [ "# Anthropic Functions\n", "\n", "This notebook shows how to use an experimental wrapper around Anthropic that gives it the same API as OpenAI Functions." ] }, { "cell_type": "code", "execution_count": 1, "id": "378be79b", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/harrisonchase/.pyenv/versions/3.9.1/envs/langchain/lib/python3.9/site-packages/deeplake/util/check_latest_version.py:32: UserWarning: A newer version of deeplake (3.6.14) is available. It's recommended that you update to the latest version using `pip install -U deeplake`.\n", " warnings.warn(\n" ] } ], "source": [ "from langchain_experimental.llms.anthropic_functions import AnthropicFunctions" ] }, { "cell_type": "markdown", "id": "65499965", "metadata": {}, "source": [ "## Initialize Model\n", "\n", "You can initialize this wrapper the same way you'd initialize ChatAnthropic" ] }, { "cell_type": "code", "execution_count": 2, "id": "e1d535f6", "metadata": {}, "outputs": [], "source": [ "model = AnthropicFunctions(model='claude-2')" ] }, { "cell_type": "markdown", "id": "fcc9eaf4", "metadata": {}, "source": [ "## Passing in functions\n", "\n", "You can now pass in functions in a similar way" ] }, { "cell_type": "code", "execution_count": 3, "id": "0779c320", "metadata": {}, "outputs": [], "source": [ "functions=[\n", " {\n", " \"name\": \"get_current_weather\",\n", " \"description\": \"Get the current weather in a given location\",\n", " \"parameters\": {\n", " \"type\": \"object\",\n", " \"properties\": {\n", " \"location\": {\n", " \"type\": \"string\",\n", " \"description\": \"The city and state, e.g. San Francisco, CA\"\n", " },\n", " \"unit\": {\n", " \"type\": \"string\",\n", " \"enum\": [\"celsius\", \"fahrenheit\"]\n", " }\n", " },\n", " \"required\": [\"location\"]\n", " }\n", " }\n", " ]" ] }, { "cell_type": "code", "execution_count": 5, "id": "ad75a933", "metadata": {}, "outputs": [], "source": [ "from langchain.schema import HumanMessage" ] }, { "cell_type": "code", "execution_count": 6, "id": "fc703085", "metadata": {}, "outputs": [], "source": [ "response = model.predict_messages(\n", " [HumanMessage(content=\"whats the weater in boston?\")], \n", " functions=functions\n", ")" ] }, { "cell_type": "code", "execution_count": 7, "id": "04d7936a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "AIMessage(content=' ', additional_kwargs={'function_call': {'name': 'get_current_weather', 'arguments': '{\"location\": \"Boston, MA\", \"unit\": \"fahrenheit\"}'}}, example=False)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response" ] }, { "cell_type": "markdown", "id": "0072fdba", "metadata": {}, "source": [ "## Using for extraction\n", "\n", "You can now use this for extraction." ] }, { "cell_type": "code", "execution_count": 8, "id": "7af5c567", "metadata": {}, "outputs": [], "source": [ "from langchain.chains import create_extraction_chain\n", "schema = {\n", " \"properties\": {\n", " \"name\": {\"type\": \"string\"},\n", " \"height\": {\"type\": \"integer\"},\n", " \"hair_color\": {\"type\": \"string\"},\n", " },\n", " \"required\": [\"name\", \"height\"],\n", "}\n", "inp = \"\"\"\n", "Alex is 5 feet tall. Claudia is 1 feet taller Alex and jumps higher than him. Claudia is a brunette and Alex is blonde.\n", " \"\"\"" ] }, { "cell_type": "code", "execution_count": 9, "id": "bd01082a", "metadata": {}, "outputs": [], "source": [ "chain = create_extraction_chain(schema, model)" ] }, { "cell_type": "code", "execution_count": 10, "id": "b5a23e9f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'name': 'Alex', 'height': '5', 'hair_color': 'blonde'},\n", " {'name': 'Claudia', 'height': '6', 'hair_color': 'brunette'}]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chain.run(inp)" ] }, { "cell_type": "markdown", "id": "90ec959e", "metadata": {}, "source": [ "## Using for tagging\n", "\n", "You can now use this for tagging" ] }, { "cell_type": "code", "execution_count": 11, "id": "03c1eb0d", "metadata": {}, "outputs": [], "source": [ "from langchain.chains import create_tagging_chain" ] }, { "cell_type": "code", "execution_count": 12, "id": "581c0ece", "metadata": {}, "outputs": [], "source": [ "schema = {\n", " \"properties\": {\n", " \"sentiment\": {\"type\": \"string\"},\n", " \"aggressiveness\": {\"type\": \"integer\"},\n", " \"language\": {\"type\": \"string\"},\n", " }\n", "}" ] }, { "cell_type": "code", "execution_count": 14, "id": "d9a8570e", "metadata": {}, "outputs": [], "source": [ "chain = create_tagging_chain(schema, model)" ] }, { "cell_type": "code", "execution_count": 15, "id": "cf37d679", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'sentiment': 'positive', 'aggressiveness': '0', 'language': 'english'}" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chain.run(\"this is really cool\")" ] } ], "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" } }, "nbformat": 4, "nbformat_minor": 5 }