{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "markdown", "source": [ "# [STREAMING] OpenAI, Anthropic, Replicate, Cohere using liteLLM\n", "In this tutorial:\n", "Note: All inputs/outputs are in the format used by `gpt-3.5-turbo`\n", "\n", "- Call all models in the same input format [**with streaming**]:\n", "\n", " `completion(model, messages, stream=True)`\n", "- All streaming generators are accessed at `chunk['choices'][0]['delta']`\n", "\n", "The following Models are covered in this tutorial\n", "- [GPT-3.5-Turbo](https://platform.openai.com/docs/models/gpt-3-5)\n", "- [Claude-2](https://www.anthropic.com/index/claude-2)\n", "- [StableLM Tuned Alpha 7B](https://replicate.com/stability-ai/stablelm-tuned-alpha-7b)\n", "- [A16z infra-LLAMA-2 7B Chat](https://replicate.com/a16z-infra/llama-2-7b-chat)\n", "- [Vicuna 13B](https://replicate.com/replicate/vicuna-13b)\n", "- [Cohere - Command Nightly]()\n", "\n", "\n", "\n" ], "metadata": { "id": "YV6L5fNv7Kep" } }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "TO-EdF84O9QT" }, "outputs": [], "source": [ "# install liteLLM\n", "!pip install litellm==0.1.369" ] }, { "cell_type": "markdown", "source": [ "## Imports & Set ENV variables\n", "Get your API Keys\n", "\n", "https://platform.openai.com/account/api-keys\n", "\n", "https://replicate.com/account/api-tokens\n", "\n", "https://console.anthropic.com/account/keys\n", "\n", "https://dashboard.cohere.ai/api-keys\n" ], "metadata": { "id": "mpHTbTqQ8fey" } }, { "cell_type": "code", "source": [ "from litellm import completion\n", "import os\n", "\n", "os.environ['OPENAI_API_KEY'] = '' # @param\n", "os.environ['REPLICATE_API_TOKEN'] = '' # @param\n", "os.environ['ANTHROPIC_API_KEY'] = '' # @param\n", "os.environ['COHERE_API_KEY'] = '' # @param" ], "metadata": { "id": "kDbgfcU8O-dW" }, "execution_count": 8, "outputs": [] }, { "cell_type": "markdown", "source": [ "### Set Messages" ], "metadata": { "id": "1KmkOdzLSOmJ" } }, { "cell_type": "code", "source": [ "user_message = \"Hello, whats the weather in San Francisco??\"\n", "messages = [{ \"content\": user_message,\"role\": \"user\"}]" ], "metadata": { "id": "xIEeOhVH-oh6" }, "execution_count": 4, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Calling Models using liteLLM Streaming -\n", "\n", "## `completion(model, messages, stream)`" ], "metadata": { "id": "9SOCVRC1L-G3" } }, { "cell_type": "code", "source": [ "# replicate models #######\n", "stability_ai = \"stability-ai/stablelm-tuned-alpha-7b:c49dae362cbaecd2ceabb5bd34fdb68413c4ff775111fea065d259d577757beb\"\n", "llama_2_7b = \"a16z-infra/llama-2-7b-chat:4f0b260b6a13eb53a6b1891f089d57c08f41003ae79458be5011303d81a394dc\"\n", "vicuna = \"replicate/vicuna-13b:6282abe6a492de4145d7bb601023762212f9ddbbe78278bd6771c8b3b2f2a13b\"\n", "\n", "models = [\"gpt-3.5-turbo\", \"claude-2\", stability_ai, llama_2_7b, vicuna, \"command-nightly\"] # command-nightly is Cohere\n", "for model in models:\n", " replicate = (model == stability_ai or model==llama_2_7b or model==vicuna) # let liteLLM know if a model is replicate, using this optional param, `replicate=True`\n", " response = completion(model=model, messages=messages, stream=True, replicate=replicate)\n", " print(f\"####################\\n\\nResponse from {model}\")\n", " for i, chunk in enumerate(response):\n", " if i < 5: # NOTE: LIMITING CHUNKS FOR THIS DEMO\n", " print((chunk['choices'][0]['delta']))\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XJ4nh4SnRzHP", "outputId": "26b9fe10-b499-4a97-d60d-a8cb8f8030b8" }, "execution_count": 13, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "####################\n", "\n", "Response from gpt-3.5-turbo\n", "{\n", " \"role\": \"assistant\",\n", " \"content\": \"\"\n", "}\n", "{\n", " \"content\": \"I\"\n", "}\n", "{\n", " \"content\": \"'m\"\n", "}\n", "{\n", " \"content\": \" sorry\"\n", "}\n", "{\n", " \"content\": \",\"\n", "}\n", "####################\n", "\n", "Response from claude-2\n", "{'role': 'assistant', 'content': ' Unfortunately'}\n", "{'role': 'assistant', 'content': ' I'}\n", "{'role': 'assistant', 'content': ' don'}\n", "{'role': 'assistant', 'content': \"'t\"}\n", "{'role': 'assistant', 'content': ' have'}\n", "####################\n", "\n", "Response from stability-ai/stablelm-tuned-alpha-7b:c49dae362cbaecd2ceabb5bd34fdb68413c4ff775111fea065d259d577757beb\n", "{'role': 'assistant', 'content': \"I'm\"}\n", "{'role': 'assistant', 'content': ' sorry,'}\n", "{'role': 'assistant', 'content': ' I'}\n", "{'role': 'assistant', 'content': ' cannot'}\n", "{'role': 'assistant', 'content': ' answer'}\n", "####################\n", "\n", "Response from a16z-infra/llama-2-7b-chat:4f0b260b6a13eb53a6b1891f089d57c08f41003ae79458be5011303d81a394dc\n", "{'role': 'assistant', 'content': ''}\n", "{'role': 'assistant', 'content': ' Hello'}\n", "{'role': 'assistant', 'content': '!'}\n", "{'role': 'assistant', 'content': ' I'}\n", "{'role': 'assistant', 'content': \"'\"}\n", "####################\n", "\n", "Response from replicate/vicuna-13b:6282abe6a492de4145d7bb601023762212f9ddbbe78278bd6771c8b3b2f2a13b\n", "{'role': 'assistant', 'content': 'Comment:'}\n", "{'role': 'assistant', 'content': 'Hi! '}\n", "{'role': 'assistant', 'content': 'How '}\n", "{'role': 'assistant', 'content': 'are '}\n", "{'role': 'assistant', 'content': 'you '}\n", "####################\n", "\n", "Response from command-nightly\n", "{'role': 'assistant', 'content': ' Hello'}\n", "{'role': 'assistant', 'content': '!'}\n", "{'role': 'assistant', 'content': ' '}\n", "{'role': 'assistant', 'content': ' I'}\n", "{'role': 'assistant', 'content': \"'m\"}\n" ] } ] }, { "cell_type": "code", "source": [], "metadata": { "id": "t7WMRuL-8NrO" }, "execution_count": null, "outputs": [] } ] }