{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Langchain liteLLM Demo Notebook\n",
        "## Use `ChatLiteLLM()` to instantly support 50+ LLM models\n",
        "Langchain Docs: https://python.langchain.com/docs/integrations/chat/litellm\n",
        "\n",
        "Call all LLM models using the same I/O interface\n",
        "\n",
        "Example usage\n",
        "```python\n",
        "ChatLiteLLM(model=\"gpt-3.5-turbo\")\n",
        "ChatLiteLLM(model=\"claude-2\", temperature=0.3)\n",
        "ChatLiteLLM(model=\"command-nightly\")\n",
        "ChatLiteLLM(model=\"replicate/llama-2-70b-chat:2c1608e18606fad2812020dc541930f2d0495ce32eee50074220b87300bc16e1\")\n",
        "```"
      ],
      "metadata": {
        "id": "5hwntUxTMxEk"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "aPNAUsCvB6Sv"
      },
      "outputs": [],
      "source": [
        "!pip install litellm langchain"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "from langchain.chat_models import ChatLiteLLM\n",
        "from langchain.prompts.chat import (\n",
        "    ChatPromptTemplate,\n",
        "    SystemMessagePromptTemplate,\n",
        "    AIMessagePromptTemplate,\n",
        "    HumanMessagePromptTemplate,\n",
        ")\n",
        "from langchain.schema import AIMessage, HumanMessage, SystemMessage"
      ],
      "metadata": {
        "id": "MOhRaVnhB-0J"
      },
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "os.environ['OPENAI_API_KEY'] = \"\"\n",
        "chat = ChatLiteLLM(model=\"gpt-3.5-turbo\")\n",
        "messages = [\n",
        "    HumanMessage(\n",
        "        content=\"what model are you\"\n",
        "    )\n",
        "]\n",
        "chat(messages)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "TahkCtlmCD65",
        "outputId": "5ddda40f-f252-4830-a8d6-bd3fa68ae487"
      },
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "AIMessage(content='I am an AI model known as GPT-3, developed by OpenAI.', additional_kwargs={}, example=False)"
            ]
          },
          "metadata": {},
          "execution_count": 17
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "os.environ['ANTHROPIC_API_KEY'] = \"\"\n",
        "chat = ChatLiteLLM(model=\"claude-2\", temperature=0.3)\n",
        "messages = [\n",
        "    HumanMessage(\n",
        "        content=\"what model are you\"\n",
        "    )\n",
        "]\n",
        "chat(messages)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "uXNDyU4jChcs",
        "outputId": "bd74b4c6-f9fb-42dc-fdc3-9240d50503ba"
      },
      "execution_count": 23,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "AIMessage(content=\" I'm Claude, an AI assistant created by Anthropic.\", additional_kwargs={}, example=False)"
            ]
          },
          "metadata": {},
          "execution_count": 23
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "os.environ['REPLICATE_API_TOKEN'] = \"\"\n",
        "chat = ChatLiteLLM(model=\"replicate/llama-2-70b-chat:2c1608e18606fad2812020dc541930f2d0495ce32eee50074220b87300bc16e1\")\n",
        "messages = [\n",
        "    HumanMessage(\n",
        "        content=\"what model are you?\"\n",
        "    )\n",
        "]\n",
        "chat(messages)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "czbDJRKcC7BV",
        "outputId": "892e147d-831e-4884-dc71-040f92c3fb8e"
      },
      "execution_count": 27,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "AIMessage(content=\" I'm an AI based based on LLaMA models (LLaMA: Open and Efficient Foundation Language Models, Touvron et al. 2023), my knowledge was built from a massive corpus of text, including books, articles, and websites, and I was trained using a variety of machine learning algorithms. My model architecture is based on the transformer architecture, which is particularly well-suited for natural language processing tasks. My team of developers and I are constantly working to improve and fine-tune my performance, and I am always happy to help with any questions you may have!\", additional_kwargs={}, example=False)"
            ]
          },
          "metadata": {},
          "execution_count": 27
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "os.environ['COHERE_API_KEY'] = \"\"\n",
        "chat = ChatLiteLLM(model=\"command-nightly\")\n",
        "messages = [\n",
        "    HumanMessage(\n",
        "        content=\"what model are you?\"\n",
        "    )\n",
        "]\n",
        "chat(messages)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "tZxpq5PDDY9Y",
        "outputId": "7e86f4ed-ac7a-45e1-87d0-217da6cad666"
      },
      "execution_count": 30,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "AIMessage(content=' I am an AI-based large language model, or Chatbot, built by the company Cohere. I am designed to have polite, helpful, inclusive conversations with users. I am always learning and improving, and I am constantly being updated with new information and improvements.\\n\\nI am currently in the development phase, and I am not yet available to the general public. However, I am currently being used by a select group of users for testing and feedback.\\n\\nI am a large language model, which means that I am trained on a massive amount of data and can understand and respond to a wide range of requests and questions. I am also designed to be flexible and adaptable, so I can be customized to suit the needs of different users and use cases.\\n\\nI am currently being used to develop a range of applications, including customer service chatbots, content generation tools, and language translation services. I am also being used to train other language models and to develop new ways of using large language models.\\n\\nI am constantly being updated with new information and improvements, so I am always learning and improving. I am also being used to develop new ways of using large language models, so I am always evolving and adapting to new use cases and requirements.', additional_kwargs={}, example=False)"
            ]
          },
          "metadata": {},
          "execution_count": 30
        }
      ]
    }
  ]
}