From 05ce06aca032e56105299a34109d94761102f0ee Mon Sep 17 00:00:00 2001 From: ivy-seed Date: Tue, 30 Jul 2024 20:18:43 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20main=20from=20@=20unifyai/unif?= =?UTF-8?q?y-docs@4361c8940ec5e2db41ba5feeb3584b4534109a65=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hub/.doctrees/environment.pickle | Bin 116964 -> 116964 bytes hub/.doctrees/home/home.doctree | Bin 10303 -> 8843 bytes hub/.doctrees/index.doctree | Bin 12605 -> 11114 bytes hub/_sources/home/home.rst.txt | 36 +++++++++++++++++++++-------- hub/home/home.html | 38 ++++++++++++++++++------------- hub/index.html | 38 ++++++++++++++++++------------- hub/searchindex.js | 2 +- 7 files changed, 72 insertions(+), 42 deletions(-) diff --git a/hub/.doctrees/environment.pickle b/hub/.doctrees/environment.pickle index f91ca987b30527671e9ad6b494f2b98bdb4c7719..d979ad945693d937a00e6449ed88360fa253f206 100644 GIT binary patch delta 25843 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 delta 20427 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 N!q}G8n!MA0{7*o7{QLj_ literal 10303 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 diff --git a/hub/.doctrees/index.doctree b/hub/.doctrees/index.doctree index c53c1f420b2e2f2baee5709afa318e89f99d76f8..30f9e047e7a2ac99e9160848d0d029b59d249346 100644 GIT binary patch delta 3788 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. From this point you can either learn how to: +It's easiest to get started using our Python client. Simply install the package: -* **Use our interfaces (Recommended)**: The interfaces guides explain how to interact with endpoints and deploy your custom router in a no-code environment. +.. code-block:: bash -* **Make your first request**: The api guides explains how to start querying endpoints and using the router with our API. + pip install unifyai -.. warning:: - Throughout the guides, you'll notice some sections marked as (Beta). **Any section marked as Beta is currently not available** and only illustrate planned features we are currently working on. We're constantly iterating on our roadmap so if you'd like to leave some feedback or suggestion on features you'd like to see, `we'd love to discuss `_ this with you! +`Sign up `_ to get your API key. Then you're ready to go! 🚀 + +.. code-block:: python + + import unify + client = unify.Unify("gpt-4o@openai", api_key=) + client.generate("hello world!") + +You can also save your key as :code:`UNIFY_KEY` in your environment variables, avoiding the need to use the :code:`api_key` argument. + +You can list all available endpoints like so, any of which can be passed into the client: + +.. code-block:: python + + import unify + import random + endpoints = unify.utils.list_endpoints() + endpoint = random.choice(endpoints) + client = unify.Unify(endpoint) + client.generate("hello world!") + +That's it! You now have all models and providers at your fingertips ✨ \ No newline at end of file diff --git a/hub/home/home.html b/hub/home/home.html index 5deadf5819..7165e75b80 100644 --- a/hub/home/home.html +++ b/hub/home/home.html @@ -329,27 +329,33 @@

Welcome to Unify!#

We’re on a mission to unify and simplify the LLM landscape. Unify lets you:

    -
  • 🔑 Use any LLM from any Provider: With a single interface, you can use all LLMs from all providers by simply changing one string.

  • -
-

No need to manage several API keys or handle different input-output formats. Unify handles all of that for you!

-
    -
  • 📊 Improve LLM Performance: Add your own custom tests and evals, and benchmark your own prompts on all models and providers.

  • -
-

Comparing quality, cost and speed, and iterate on your system prompt until all test cases pass, and you can deploy your app!

-
    +
  • 🔑 Use any LLM from any Provider: With a single interface, you can use all LLMs from all providers by simply changing one string. No need to manage several API keys or handle different input-output formats. Unify handles all of that for you!

  • +
  • 📊 Improve LLM Performance: Add your own custom tests and evals, and benchmark your own prompts on all models and providers. Comparing quality, cost and speed, and iterate on your system prompt until all test cases pass, and you can deploy your app!

  • 🔀 Route to the Best LLM: Improve quality, cost and speed by routing to the perfect model and provider for each individual prompt.

Getting Started#

-

We recommend you give the concepts section a quick read to get familiar with routing and benchmarking. Once you’re ready to go, start by Signing In. From this point you can either learn how to:

-
    -
  • Use our interfaces (Recommended): The interfaces guides explain how to interact with endpoints and deploy your custom router in a no-code environment.

  • -
  • Make your first request: The api guides explains how to start querying endpoints and using the router with our API.

  • -
-
-

Warning

-

Throughout the guides, you’ll notice some sections marked as (Beta). Any section marked as Beta is currently not available and only illustrate planned features we are currently working on. We’re constantly iterating on our roadmap so if you’d like to leave some feedback or suggestion on features you’d like to see, we’d love to discuss this with you!

+

It’s easiest to get started using our Python client. Simply install the package:

+
pip install unifyai
+
+
+

Sign up to get your API key. Then you’re ready to go! 🚀

+
import unify
+client = unify.Unify("gpt-4o@openai", api_key=<your_key>)
+client.generate("hello world!")
+
+
+

You can also save your key as UNIFY_KEY in your environment variables, avoiding the need to use the api_key argument.

+

You can list all available endpoints like so, any of which can be passed into the client:

+
import unify
+import random
+endpoints = unify.utils.list_endpoints()
+endpoint = random.choice(endpoints)
+client = unify.Unify(endpoint)
+client.generate("hello world!")
+
+

That’s it! You now have all models and providers at your fingertips ✨

diff --git a/hub/index.html b/hub/index.html index 6f9bf201e8..34c8bb753a 100644 --- a/hub/index.html +++ b/hub/index.html @@ -304,27 +304,33 @@

Welcome to Unify!#

We’re on a mission to unify and simplify the LLM landscape. Unify lets you:

    -
  • 🔑 Use any LLM from any Provider: With a single interface, you can use all LLMs from all providers by simply changing one string.

  • -
-

No need to manage several API keys or handle different input-output formats. Unify handles all of that for you!

-
    -
  • 📊 Improve LLM Performance: Add your own custom tests and evals, and benchmark your own prompts on all models and providers.

  • -
-

Comparing quality, cost and speed, and iterate on your system prompt until all test cases pass, and you can deploy your app!

-
    +
  • 🔑 Use any LLM from any Provider: With a single interface, you can use all LLMs from all providers by simply changing one string. No need to manage several API keys or handle different input-output formats. Unify handles all of that for you!

  • +
  • 📊 Improve LLM Performance: Add your own custom tests and evals, and benchmark your own prompts on all models and providers. Comparing quality, cost and speed, and iterate on your system prompt until all test cases pass, and you can deploy your app!

  • 🔀 Route to the Best LLM: Improve quality, cost and speed by routing to the perfect model and provider for each individual prompt.

Getting Started#

-

We recommend you give the concepts section a quick read to get familiar with routing and benchmarking. Once you’re ready to go, start by Signing In. From this point you can either learn how to:

-
    -
  • Use our interfaces (Recommended): The interfaces guides explain how to interact with endpoints and deploy your custom router in a no-code environment.

  • -
  • Make your first request: The api guides explains how to start querying endpoints and using the router with our API.

  • -
-
-

Warning

-

Throughout the guides, you’ll notice some sections marked as (Beta). Any section marked as Beta is currently not available and only illustrate planned features we are currently working on. We’re constantly iterating on our roadmap so if you’d like to leave some feedback or suggestion on features you’d like to see, we’d love to discuss this with you!

+

It’s easiest to get started using our Python client. Simply install the package:

+
pip install unifyai
+
+
+

Sign up to get your API key. Then you’re ready to go! 🚀

+
import unify
+client = unify.Unify("gpt-4o@openai", api_key=<your_key>)
+client.generate("hello world!")
+
+
+

You can also save your key as UNIFY_KEY in your environment variables, avoiding the need to use the api_key argument.

+

You can list all available endpoints like so, any of which can be passed into the client:

+
import unify
+import random
+endpoints = unify.utils.list_endpoints()
+endpoint = random.choice(endpoints)
+client = unify.Unify(endpoint)
+client.generate("hello world!")
+
+

That’s it! You now have all models and providers at your fingertips ✨

diff --git a/hub/searchindex.js b/hub/searchindex.js index 22a764189d..3fe0391357 100644 --- a/hub/searchindex.js +++ b/hub/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["concepts/benchmarks", "concepts/deploy_router", "concepts/first_request", "concepts/images", "concepts/reference", "concepts/router", "concepts/unify_api", "console/building_router", "console/connecting_stack", "console/running_benchmarks", "docs/unify/unify", "docs/unify/unify/unify.chat", "docs/unify/unify/unify.clients", "docs/unify/unify/unify.exceptions", "docs/unify/unify/unify.utils", "home/home", "index", "on_prem/on_prem_access", "on_prem/sso", "tools/openapi", "tools/python_library"], "filenames": ["concepts/benchmarks.rst", "concepts/deploy_router.rst", "concepts/first_request.rst", "concepts/images.rst", "concepts/reference.rst", "concepts/router.rst", "concepts/unify_api.rst", "console/building_router.rst", "console/connecting_stack.rst", "console/running_benchmarks.rst", "docs/unify/unify.rst", "docs/unify/unify/unify.chat.rst", "docs/unify/unify/unify.clients.rst", "docs/unify/unify/unify.exceptions.rst", "docs/unify/unify/unify.utils.rst", "home/home.rst", "index.rst", "on_prem/on_prem_access.rst", "on_prem/sso.rst", "tools/openapi.rst", "tools/python_library.rst"], "titles": ["Benchmarking", "Deploying a router", "Making your first request", "On-Prem Images", "API Reference", "Routing", "Universal API", "Building a custom router", "Connecting your stack", "Benchmarking endpoints", "<no title>", "Chat", "Clients", "Exceptions", "Utils", "Welcome to Unify!", "Home", "On-Prem access", "SSO (Single Sign On)", "OpenAPI Specification", "Python Library"], "terms": {"when": [0, 1, 2, 4, 5, 7, 12], "compar": [0, 9, 15, 16], "llm": [0, 1, 2, 8, 9, 11, 15, 16], "i": [0, 1, 2, 4, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18], "constant": 0, "tradeoff": 0, "make": [0, 1, 4, 7, 12, 15, 16], "between": [0, 2, 5, 6, 7, 12], "qualiti": [0, 5, 7, 15, 16], "cost": [0, 1, 5, 6, 7, 9, 15, 16], "latenc": [0, 1, 5, 7, 9], "stronger": 0, "model": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18], "ar": [0, 1, 2, 5, 6, 7, 8, 9, 15, 16], "gener": [0, 1, 2, 4, 5, 6, 12, 18], "slower": 0, "more": [0, 2, 5, 9, 12], "expens": 0, "sometim": [0, 6], "overkil": 0, "task": [0, 1, 5, 7, 9], "hand": [0, 9], "complic": 0, "matter": 0, "further": [0, 7, 12], "new": [0, 2, 5, 6, 7, 8, 9], "releas": [0, 5], "weekli": 0, "each": [0, 1, 5, 6, 7, 9, 14, 15, 16], "claim": 0, "state": 0, "art": 0, "data": [0, 1, 7], "let": [0, 1, 2, 7, 8, 9, 15, 16], "you": [0, 1, 2, 4, 5, 6, 7, 8, 9, 15, 16, 18], "see": [0, 6, 7, 9, 15, 16], "differ": [0, 4, 5, 7, 9, 15, 16], "perform": [0, 1, 7, 9, 15, 16], "can": [0, 1, 2, 4, 5, 6, 7, 8, 9, 15, 16, 18], "relat": 0, "live": [0, 5, 6], "stat": 0, "pull": [0, 18], "from": [0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 15, 16, 18], "our": [0, 1, 2, 6, 7, 8, 9, 15, 16, 17, 18], "runtim": [0, 5, 6], "come": [0, 4, 5, 6], "out": [0, 2, 5, 6], "simpli": [0, 2, 9, 15, 16], "re": [0, 7, 9, 15, 16, 18], "run": [0, 2, 6, 7, 8, 11, 18], "thei": [0, 5, 6], "first": [0, 1, 4, 5, 6, 7, 9, 15, 16], "creat": [0, 2, 4, 6, 7, 8], "which": [0, 4, 5, 6, 7, 9, 18], "repres": [0, 11], "want": [0, 1, 2, 7, 8, 9], "evalu": [0, 9, 14], "need": [0, 1, 2, 5, 6, 7, 8, 9, 15, 16], "list": [0, 2, 6, 7, 9, 12, 14], "prompt": [0, 1, 5, 6, 8, 9, 12, 14, 15, 16], "option": [0, 1, 5, 7, 8, 11, 12, 14], "includ": [0, 1, 7, 8, 9], "refer": [0, 5, 8], "gold": 0, "standard": [0, 6, 8], "answer": [0, 5, 8], "contain": [0, 2, 5, 6, 8, 9, 12, 14], "tend": [0, 9], "get": [0, 1, 5, 6, 11, 12, 14, 17], "accur": 0, "The": [0, 2, 4, 5, 6, 7, 8, 9, 11, 12, 15, 16, 18], "file": [0, 2, 5, 8, 14, 18], "itself": 0, "should": [0, 2, 6, 8, 9, 18], "jsonl": [0, 5, 8], "format": [0, 4, 5, 6, 11, 12, 15, 16], "one": [0, 1, 2, 4, 5, 6, 8, 9, 15, 16], "entri": [0, 5], "per": [0, 1, 7], "line": [0, 2], "exampl": [0, 1, 2, 4, 5, 6, 7, 8], "below": [0, 1, 2, 7, 8, 9], "thi": [0, 1, 2, 4, 5, 6, 7, 8, 9, 14, 15, 16, 18], "ref_answ": [0, 5], "second": [0, 1, 7], "us": [0, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18], "least": [0, 9], "50": 0, "most": [0, 5, 8], "result": [0, 5, 7, 8, 9], "current": [0, 1, 4, 6, 7, 9, 15, 16], "an": [0, 1, 5, 6, 7, 8, 11, 12, 14], "maximum": 0, "limit": [0, 2, 5, 6], "500": [0, 13], "we": [0, 1, 2, 5, 6, 7, 8, 9, 15, 16], "don": [0, 4, 7], "t": [0, 1, 2, 4, 5, 7, 9], "much": [0, 1, 5], "extra": 0, "detail": [0, 1, 2, 4, 6, 7, 18], "past": 0, "250": 0, "In": [0, 1, 2, 5, 6, 7, 8, 9, 15, 16], "dashboard": [0, 5, 7, 9], "click": [0, 5, 7, 8, 9], "select": [0, 5, 7, 9], "open": [0, 7, 9], "interfac": [0, 1, 2, 5, 6, 8, 9, 15, 16], "upload": [0, 2, 5, 7, 8, 9, 14], "finish": [0, 5], "ll": [0, 1, 2, 5, 7, 8, 9, 15, 16], "receiv": [0, 5, 7], "email": [0, 5, 7], "graph": [0, 5, 7, 9], "displai": [0, 5, 7, 9], "x": [0, 2, 4, 6, 7, 9, 18], "axi": [0, 9], "set": [0, 1, 2, 6, 7, 8, 11, 12], "time": [0, 1, 5, 6, 7, 9], "token": [0, 1, 5, 6, 7, 9, 12], "inter": [0, 1, 5, 7], "either": [0, 6, 7, 14, 15, 16], "linear": 0, "log": 0, "scale": 0, "gpt4o": 0, "judg": 0, "cf": 0, "http": [0, 2, 4, 12, 13, 14, 18], "arxiv": 0, "org": 0, "ab": 0, "2306": 0, "05685": 0, "": [0, 1, 2, 5, 6, 7, 8, 9, 12, 18], "respons": [0, 1, 2, 4, 5, 6, 12, 14, 18], "section": [1, 2, 7, 8, 9, 15, 16], "learn": [1, 2, 4, 5, 7, 8, 9, 15, 16], "how": [1, 2, 5, 6, 7, 8, 9, 15, 16], "unifi": [1, 2, 4, 7, 8, 11, 12, 13, 14, 18], "through": [1, 2, 6, 7, 8, 9], "api": [1, 5, 7, 8, 11, 12, 14, 15, 16, 18], "If": [1, 2, 4, 6, 7, 8, 9, 11, 12, 14], "haven": [1, 2, 9], "done": [1, 2, 7, 9], "so": [1, 2, 6, 7, 8, 9, 15, 16], "recommend": [1, 2, 9, 15, 16], "request": [1, 4, 7, 9, 13, 15, 16, 18], "familiar": [1, 15, 16], "leverag": 1, "inform": [1, 7, 9], "benchmark": [1, 2, 5, 6, 7, 8, 15, 16], "automat": [1, 6, 7], "rout": [1, 2, 7, 8, 15, 16], "best": [1, 5, 7, 15, 16], "provid": [1, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16], "choos": [1, 2, 5, 7], "valu": [1, 9, 11, 12, 14], "chang": [1, 5, 7, 9, 15, 16], "over": [1, 5, 9], "dynam": 1, "ensur": [1, 7, 9], "alwai": [1, 9], "without": 1, "have": [1, 2, 4, 5, 6, 7, 8, 9, 18], "monitor": 1, "yourself": 1, "To": [1, 2, 4, 5, 6, 9, 17], "onli": [1, 2, 6, 7, 9, 15, 16], "provier": 1, "name": [1, 2, 4, 6, 7, 8, 9, 11, 12, 14], "support": [1, 2, 6, 14], "configur": [1, 2, 5, 7, 9], "follow": [1, 4, 5, 6], "config": 1, "lowest": 1, "input": [1, 4, 15, 16], "output": [1, 6, 9, 12, 15, 16], "itl": 1, "ttft": [1, 9], "highest": 1, "tk": 1, "sec": [1, 9], "For": [1, 2, 5, 7, 8, 9], "e": [1, 2, 5, 7, 9], "g": [1, 2, 7, 9], "python": [1, 18], "packag": 1, "endpoint": [1, 4, 7, 11, 12, 14, 15, 16], "import": [1, 2, 6, 18], "o": [1, 2], "assum": [1, 2, 7, 8], "ad": [1, 2, 9], "unify_kei": [1, 2, 11, 12, 14], "your": [1, 4, 5, 6, 12, 15, 16, 18], "environ": [1, 2, 7, 11, 12, 14, 15, 16], "variabl": [1, 2, 11, 12, 14], "otherwis": [1, 2, 12, 14], "would": [1, 2, 6, 7, 8, 9], "specifi": [1, 2, 4, 5, 6, 7, 8, 9, 14], "api_kei": [1, 2, 6, 11, 12, 14, 18], "argument": [1, 2, 4], "mistral": [1, 2, 6, 9], "7b": [1, 2, 6, 9], "instruct": [1, 2, 6, 9], "v0": [1, 2, 4, 6, 9], "3": [1, 2, 4, 6, 7, 9, 18], "explain": [1, 2, 4, 9, 15, 16, 18], "who": [1, 2, 4, 18], "newton": [1, 2, 4, 18], "wa": [1, 2, 4, 12, 14, 18], "hi": [1, 2, 4, 6, 18], "entir": [1, 2, 4, 9, 18], "theori": [1, 2, 4, 18], "gravit": [1, 2, 4, 18], "give": [1, 2, 4, 15, 16, 18], "long": [1, 2, 4, 18], "pleas": [1, 2, 4, 18], "all": [1, 2, 4, 6, 7, 8, 9, 13, 14, 15, 16, 18], "achiev": [1, 2, 4, 18], "addition": 1, "multipl": 1, "other": [1, 2, 6, 7, 9], "featur": [1, 15, 16], "enabl": [1, 7], "ani": [1, 2, 6, 7, 9, 15, 16], "whose": [1, 14], "lower": [1, 12], "than": [1, 5, 9], "specif": [1, 2, 4, 5, 9, 14], "just": [1, 2, 9], "append": [1, 4], "float": [1, 12], "prefer": 1, "mode": 1, "keep": 1, "thing": 1, "simpl": 1, "alias": 1, "oc": 1, "ic": 1, "ot": 1, "illustr": [1, 15, 16], "some": [1, 2, 6, 7, 9, 15, 16], "0": [1, 2, 4, 6, 7, 12], "5input": 1, "case": [1, 2, 7, 9, 15, 16], "ha": [1, 2, 6, 7], "smaller": [1, 5], "5": 1, "credit": [1, 4, 6, 11, 12], "million": 1, "1output": 1, "likewis": [1, 2, 6], "scenario": 1, "direct": 1, "offer": [1, 17], "1": [1, 5, 12], "5ic": 1, "15itl": 1, "now": [1, 2, 7, 8, 9, 18], "someth": [1, 6, 9], "similar": [1, 5], "alia": 1, "also": [1, 2, 7, 8, 9], "consid": 1, "less": 1, "15": 1, "m": 1, "depend": [1, 7], "might": 1, "where": [1, 2, 7, 9, 12], "meet": [1, 6, 7], "criteria": 1, "render": 1, "unfulfil": 1, "404": [1, 13], "error": [1, 4, 12, 13, 14], "correspond": [1, 2, 4, 7, 9], "explan": 1, "detect": 1, "polici": 1, "do": [1, 2, 8], "like": [1, 2, 6, 7, 8, 9, 12, 15, 16, 18], "won": 1, "work": [1, 7, 15, 16], "sinc": 1, "price": 1, "yet": [1, 4, 7], "001ic": 1, "status_cod": [1, 2], "cheapest": 1, "fallback": 1, "payload": [1, 2, 6], "train": [1, 9], "befor": [1, 2, 7, 9], "id": [1, 2, 4, 6, 7], "same": [1, 2, 5, 7], "call": [1, 7, 17], "code": [1, 2, 6, 15, 16], "send": [1, 4, 9], "gpt": [1, 7], "claud": [1, 7, 18], "llama3": [1, 7], "anthropic_8": [1, 7], "28e": [1, 7], "03_4": [1, 7], "66e": [1, 7], "4_1": [1, 7], "00e": [1, 7], "06": [1, 6, 7], "queri": [1, 4, 5, 7, 8, 15, 16], "curl": [1, 2, 4, 6, 18], "among": 1, "page": [1, 2, 4, 6, 7, 9], "That": [1, 7, 8, 9], "know": [1, 2, 8, 9], "care": 1, "about": [1, 4, 5, 9], "start": [1, 2, 11], "applic": [1, 2, 4, 6, 7, 13, 18], "across": [2, 7, 8, 9], "alreadi": [2, 7, 8], "sign": [2, 4, 6, 15, 16], "consol": [2, 6, 7, 8, 9], "greet": 2, "There": [2, 6, 8, 9], "link": 2, "interact": [2, 4, 6, 11, 12, 15, 16], "suspect": 2, "leak": 2, "wai": [2, 6, 7, 8], "safe": 2, "regener": 2, "replac": [2, 6], "old": 2, "workflow": [2, 6], "balanc": [2, 4, 6, 7], "account": [2, 4, 6, 7, 9, 12], "both": [2, 6, 7], "identifi": 2, "given": [2, 4, 14], "go": [2, 4, 5, 6, 7, 9, 15, 16], "copi": [2, 5, 7], "top": [2, 6, 9], "row": 2, "tabl": [2, 9], "v2": 2, "show": [2, 7, 8, 9, 11], "firework": [2, 6], "ai": [2, 4, 6, 8], "custom": [2, 9, 13, 15, 16], "abl": [2, 5], "easiest": 2, "unifyai": [2, 6, 18], "instal": [2, 6], "pip": [2, 6], "script": 2, "insert": 2, "your_api_kei": [2, 4, 6], "env": [2, 18], "project": 2, "pass": [2, 15, 16], "client": [2, 6, 11, 18], "store": 2, "safeti": 2, "remain": [2, 9, 12], "readi": [2, 7, 8, 15, 16], "method": 2, "abov": 2, "return": [2, 6, 11, 12, 14], "string": [2, 5, 6, 12, 15, 16], "access": [2, 6, 7, 9, 11, 12, 18], "coupl": 2, "list_model": [2, 14], "list_provid": [2, 14], "addit": 2, "synchron": 2, "asynchron": [2, 12], "well": [2, 6, 7, 8], "stream": [2, 4, 6, 12], "check": [2, 9], "repo": 2, "text": [2, 4, 6], "chat": [2, 5, 6, 7, 18], "complet": [2, 5, 6, 7, 9, 18], "wouldn": 2, "normal": 2, "allow": [2, 5, 7, 9], "bypass": 2, "model_nam": [2, 11, 12], "provider_nam": [2, 11, 12], "been": [2, 7], "deploi": [2, 6, 7, 9, 15, 16], "languag": [2, 6], "post": [2, 6, 18], "h": [2, 4, 6, 18], "accept": [2, 4, 6, 18], "json": [2, 4, 6, 12, 14, 18], "author": [2, 4, 6], "bearer": [2, 4, 6], "your_unify_kei": [2, 6], "content": [2, 4, 6, 12, 14, 18], "type": [2, 4, 6, 11, 12, 14, 18], "d": [2, 4, 6, 7, 15, 16, 18], "messag": [2, 4, 6, 12, 18], "role": [2, 4, 6, 18], "user": [2, 4, 6, 7, 12, 18], "true": [2, 6, 12], "Or": 2, "url": [2, 6], "header": [2, 6], "print": [2, 6], "200": [2, 4], "chunk": [2, 6, 12], "iter_cont": 2, "chunk_siz": 2, "1024": [2, 12], "decod": 2, "utf": 2, "8": [2, 12], "els": [2, 9], "doc": 2, "avail": [2, 4, 5, 8, 14, 15, 16], "here": [2, 4, 5, 7], "thank": 2, "easili": 2, "integr": [2, 8], "lot": 2, "switch": 2, "base_url": [2, 6, 18], "sai": [2, 6], "test": [2, 7, 9, 15, 16], "word": 2, "showcas": 2, "function": 2, "choic": [2, 4, 6], "delta": [2, 6], "end": [2, 6], "take": [2, 7], "look": [2, 6, 7, 18], "snippet": 2, "offlin": 2, "api_bas": 2, "order": [2, 9], "insert_model": 2, "next": [2, 5, 6, 7, 8, 9], "lorem": [3, 19, 20], "ipsum": [3, 19, 20], "welcom": 4, "resourc": 4, "up": [4, 6, 12], "kei": [4, 6, 8, 11, 12, 14, 15, 16], "retriev": [4, 11, 12], "authent": 4, "ok": 4, "success": [4, 12, 14], "oper": 4, "associ": [4, 14], "corresponding_user_id": 4, "232": [4, 6], "32": [4, 6], "401": [4, 13], "unauthor": [4, 13], "invalid": 4, "403": [4, 13], "forbidden": [4, 13], "Not": [4, 13], "host": [4, 8], "openai": [4, 8, 11, 12], "sure": 4, "its": [4, 6, 7], "after": [4, 5, 7], "llama": [4, 6, 7, 9], "8b": [4, 6], "anyscal": 4, "fals": [4, 11, 12], "schema": 4, "object": [4, 6, 11, 12], "defin": 4, "1704999905": 4, "meta": 4, "hf": 4, "xr868c": 4, "t4z": 4, "tkltfxxzsvq57wmhxb34el5zuuxsatfu": 4, "usag": [4, 6], "completion_token": [4, 6], "512": 4, "prompt_token": [4, 6], "34": 4, "total_token": [4, 6], "546": 4, "finish_reason": [4, 6], "length": [4, 9], "index": [4, 6], "isaac": 4, "1643": 4, "1727": 4, "assist": [4, 6], "422": [4, 13], "unprocess": [4, 13], "entiti": [4, 13], "flexibl": 5, "handl": [5, 6, 15, 16], "advantag": 5, "sever": [5, 15, 16], "reason": [5, 6], "small": 5, "faster": 5, "cheaper": 5, "wherea": 5, "bigger": 5, "capabl": 5, "often": 5, "rang": 5, "difficulti": 5, "everi": [5, 6], "week": 5, "strength": 5, "weak": 5, "continu": 5, "improv": [5, 15, 16], "ride": 5, "wave": 5, "abil": 5, "minimis": 5, "base": [5, 7, 11, 12, 13], "statist": 5, "purpos": 5, "wide": 5, "varieti": [5, 8], "green": 5, "star": [5, 9], "q": 5, "c": 5, "4": [5, 7, 12], "65e": 5, "03": 5, "2": [5, 12], "08e": 5, "05": 5, "07e": 5, "paramet": [5, 6], "stand": 5, "rel": 5, "weigh": 5, "customiz": 5, "meaning": 5, "directli": 5, "restrict": 5, "them": [5, 7, 9], "model1": 5, "model2": 5, "model3": 5, "provider1": 5, "provider2": 5, "rate": 5, "hit": 5, "move": [5, 7], "mean": [5, 18], "higher": [5, 12], "singl": [5, 6, 12, 15, 16], "ve": [5, 8, 9], "found": [5, 13], "those": [5, 8], "product": [5, 6], "visualis": 5, "form": [5, 6], "xxx": 5, "yyi": 5, "accuraci": 5, "final": [5, 7], "system": [5, 12, 15, 16], "onc": [5, 7, 8, 9, 15, 16, 18], "sea": 6, "own": [6, 8, 15, 16], "subtl": 6, "nuanc": 6, "A": [6, 7, 12, 14], "common": [6, 8], "One": 6, "program": 6, "three": 6, "command": 6, "termin": 6, "unify_api_kei": 6, "hello": 6, "field": 6, "find": [6, 9], "made": 6, "togeth": 6, "1718888877": 6, "896bfc1ae84271aa": 6, "lhr": 6, "25": 6, "13": 6, "38": 6, "7": 6, "6e": 6, "stop": [6, 12], "It": 6, "nice": 6, "help": 6, "seed": 6, "11563975138181362140": 6, "via": [6, 8], "number": [6, 12], "total": [6, 14], "u": [6, 9, 17], "temperatur": [6, 12], "max_token": [6, 12], "mai": [6, 7], "compat": 6, "download": [6, 14], "document": 6, "readm": 6, "sampl": [6, 12], "infer": 6, "design": [6, 9], "exist": 6, "straightforward": 6, "try": 6, "rememb": 6, "const": 6, "baseurl": 6, "apikei": 6, "await": 6, "again": [6, 8], "manag": [6, 15, 16], "spend": 6, "behind": [6, 9], "scene": 6, "refil": 6, "get_credit": 6, "your_user_id": 6, "fine": [6, 7], "tune": [6, 7, 9], "add": [6, 7, 8, 9, 15, 16], "relev": 6, "individu": [6, 15, 16], "outag": 6, "disrupt": 6, "combat": 6, "down": 6, "fail": 6, "until": [6, 15, 16], "succe": 6, "reach": 6, "tag": 6, "becom": 6, "model_a": 6, "provider_a": 6, "model_b": 6, "provider_b": 6, "actual": 6, "went": 6, "window": 7, "dataset": [7, 9, 14], "intend": 7, "earlier": [7, 9], "variant": 7, "dropdown": [7, 9], "notic": [7, 15, 16], "becaus": 7, "doe": 7, "button": [7, 8], "submit": [7, 9], "job": [7, 9], "schedul": 7, "behalf": [7, 8], "ahead": 7, "duplic": 7, "previous": 7, "calls1": [7, 9], "call2": 7, "q1": 7, "q2": 7, "repeat": 7, "howev": 7, "70b": 7, "trigger": [7, 9], "manual": 7, "track": [7, 9], "progress": [7, 9], "With": [7, 15, 16], "stage": 7, "accordingli": 7, "visual": [7, 9], "step": [7, 8, 18], "explor": [7, 9], "variou": [7, 9], "possibl": 7, "trade": 7, "off": [7, 8], "speed": [7, 9, 15, 16], "variat": 7, "These": 7, "As": [7, 9], "point": [7, 9, 15, 16], "plot": [7, 9], "view": [7, 9], "constrain": 7, "search": 7, "space": 7, "certain": 7, "deploy": 7, "guarante": 7, "requir": 7, "Of": 7, "cours": 7, "visibl": 7, "remov": [7, 9, 14], "presum": 7, "anthrop": [7, 18], "properli": 7, "save": [7, 14], "moment": 7, "therefor": 7, "appli": 7, "altern": [7, 8], "had": 7, "overwritten": 7, "clauc": 7, "place": 7, "legend": [7, 9], "underneath": 7, "parent": 7, "slightli": 7, "reduc": 7, "amount": 7, "decid": 7, "stick": 7, "decis": 7, "avoid": 7, "immedi": 7, "futur": 7, "appear": [7, 9], "full": 7, "frequenc": 7, "gpt4": 7, "42": 7, "29": 7, "calls2": [7, 9], "18": 7, "11": 7, "metric": [7, 9], "ax": 7, "verifi": 7, "session": 7, "perman": 7, "veri": 7, "happi": [7, 9], "forget": 7, "delet": [7, 14], "anytim": 7, "press": [7, 9], "besid": 7, "clipboard": 7, "along": 7, "default": [7, 9, 11, 12, 14], "shelf": 8, "azur": 8, "ml": 8, "catalog": 8, "vertex": 8, "garden": 8, "aw": 8, "bedrock": 8, "whole": 8, "major": 8, "cloud": 8, "regardless": 8, "expos": [8, 9], "adher": 8, "got": 8, "said": 8, "screen": 8, "local": [8, 14, 18], "build": 8, "label": [8, 9], "preview": 8, "imag": [8, 9], "router": [8, 9, 15, 16], "navig": 9, "ones": 9, "methodologi": 9, "head": 9, "By": 9, "six": 9, "openherm": 9, "shown": 9, "On": 9, "against": 9, "scatter": 9, "replot": 9, "similarili": 9, "score": 9, "updat": 9, "averag": 9, "granular": 9, "outsid": 9, "popular": 9, "period": 9, "suit": 9, "dedic": 9, "region": 9, "sequenc": [9, 12], "latest": [9, 18], "sort": 9, "icon": 9, "column": 9, "reveal": 9, "pattern": 9, "figur": 9, "fit": 9, "resum": 9, "previou": 9, "privat": 9, "server": [9, 13], "vari": 9, "fastest": 9, "under": 9, "ip": 9, "address": 9, "lock": 9, "indic": 9, "necessari": 9, "subsect": 9, "separ": 9, "expand": 9, "pair": 9, "histori": [9, 11, 12], "mixtral": 9, "financ": 9, "alongsid": 9, "foundat": 9, "class": [11, 12, 13], "chatbot": 11, "none": [11, 12, 14], "agent": 11, "__init__": [11, 12], "initi": [11, 12], "arg": [11, 12, 14], "str": [11, 12, 14], "uploaded_bi": [11, 12], "must": [11, 12, 14], "attempt": [11, 12], "rais": [11, 12, 13, 14], "unifyerror": [11, 12, 13], "miss": [11, 12], "clear_chat_histori": 11, "clear": 11, "properti": [11, 12], "dar201": [11, 12], "noqa": [11, 12], "show_credit": 11, "show_provid": 11, "loop": 11, "bool": [11, 12], "whether": 11, "consumpt": 11, "set_client": 11, "dar101": [11, 12], "set_endpoint": [11, 12], "set_model": [11, 12], "set_provid": [11, 12], "asyncunifi": 12, "async": 12, "user_prompt": 12, "system_prompt": 12, "union": 12, "asyncgener": 12, "dict": [12, 14], "dictionari": [12, 14], "convers": 12, "int": 12, "max": 12, "what": [12, 18], "random": 12, "while": 12, "focus": 12, "determinist": 12, "yield": 12, "occur": 12, "dure": 12, "get_credit_bal": 12, "left": 12, "badrequesterror": [12, 13, 14], "valueerror": [12, 14], "pars": [12, 14], "authenticationerror": 13, "400": 13, "bad": 13, "conflicterror": 13, "409": 13, "conflict": 13, "internalservererror": 13, "intern": 13, "notfounderror": 13, "permissiondeniederror": 13, "ratelimiterror": 13, "429": 13, "too": 13, "mani": 13, "unprocessableentityerror": 13, "delete_dataset": 14, "platform": 14, "path": 14, "info": 14, "msg": 14, "delete_evalu": 14, "download_dataset": 14, "list_dataset": 14, "fetch": 14, "list_endpoint": 14, "empti": 14, "list_evalu": 14, "upload_dataset_from_dictionari": 14, "upload_dataset_from_fil": 14, "mission": [15, 16], "simplifi": [15, 16], "landscap": [15, 16], "No": [15, 16], "eval": [15, 16], "iter": [15, 16], "app": [15, 16], "perfect": [15, 16], "concept": [15, 16], "quick": [15, 16], "read": [15, 16], "guid": [15, 16], "throughout": [15, 16], "mark": [15, 16], "beta": [15, 16], "plan": [15, 16], "constantli": [15, 16], "roadmap": [15, 16], "leav": [15, 16], "feedback": [15, 16], "suggest": [15, 16], "love": [15, 16], "discuss": [15, 16], "book": 17, "prem": 18, "microservic": 18, "grant": 18, "docker": 18, "Then": 18, "dt": 18, "p": 18, "8000": 18, "env_file_path": 18, "deepinfra_api_kei": 18, "stability_api_kei": 18, "mistral_ai_api_kei": 18, "perplexity_ai_api_kei": 18, "anyscale_api_kei": 18, "octoai_api_kei": 18, "openai_api_kei": 18, "together_ai_api_kei": 18, "replicate_api_kei": 18, "lepton_ai_api_kei": 18, "fireworks_ai_api_kei": 18, "anthropic_api_kei": 18, "vertexai_service_acc_json": 18, "vertexai_gcloud_path": 18, "vertexai_project": 18, "vertexai_loc": 18, "servic": 18, "weather": 18, "san": 18, "francisco": 18, "tokyo": 18, "pari": 18, "localhost": 18, "haiku": 18, "random_key_wont_be_us": 18, "life": 18}, "objects": {"unify": [[11, 0, 0, "-", "chat"], [12, 0, 0, "-", "clients"], [13, 0, 0, "-", "exceptions"], [14, 0, 0, "-", "utils"]], "unify.chat": [[11, 1, 1, "", "ChatBot"]], "unify.chat.ChatBot": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "clear_chat_history"], [11, 3, 1, "", "client"], [11, 3, 1, "", "endpoint"], [11, 3, 1, "", "model"], [11, 3, 1, "", "provider"], [11, 2, 1, "", "run"], [11, 2, 1, "", "set_client"], [11, 2, 1, "", "set_endpoint"], [11, 2, 1, "", "set_model"], [11, 2, 1, "", "set_provider"]], "unify.clients": [[12, 1, 1, "", "AsyncUnify"], [12, 1, 1, "", "Unify"]], "unify.clients.AsyncUnify": [[12, 2, 1, "", "__init__"], [12, 3, 1, "", "endpoint"], [12, 2, 1, "", "generate"], [12, 2, 1, "", "get_credit_balance"], [12, 3, 1, "", "model"], [12, 3, 1, "", "provider"], [12, 2, 1, "", "set_endpoint"], [12, 2, 1, "", "set_model"], [12, 2, 1, "", "set_provider"]], "unify.clients.Unify": [[12, 2, 1, "", "__init__"], [12, 3, 1, "", "endpoint"], [12, 2, 1, "", "generate"], [12, 2, 1, "", "get_credit_balance"], [12, 3, 1, "", "model"], [12, 3, 1, "", "provider"], [12, 2, 1, "", "set_endpoint"], [12, 2, 1, "", "set_model"], [12, 2, 1, "", "set_provider"]], "unify.exceptions": [[13, 4, 1, "", "AuthenticationError"], [13, 4, 1, "", "BadRequestError"], [13, 4, 1, "", "ConflictError"], [13, 4, 1, "", "InternalServerError"], [13, 4, 1, "", "NotFoundError"], [13, 4, 1, "", "PermissionDeniedError"], [13, 4, 1, "", "RateLimitError"], [13, 4, 1, "", "UnifyError"], [13, 4, 1, "", "UnprocessableEntityError"]], "unify.utils": [[14, 5, 1, "", "delete_dataset"], [14, 5, 1, "", "delete_evaluation"], [14, 5, 1, "", "download_dataset"], [14, 5, 1, "", "evaluate"], [14, 5, 1, "", "list_datasets"], [14, 5, 1, "", "list_endpoints"], [14, 5, 1, "", "list_evaluations"], [14, 5, 1, "", "list_models"], [14, 5, 1, "", "list_providers"], [14, 5, 1, "", "upload_dataset_from_dictionary"], [14, 5, 1, "", "upload_dataset_from_file"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:property", "4": "py:exception", "5": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "property", "Python property"], "4": ["py", "exception", "Python exception"], "5": ["py", "function", "Python function"]}, "titleterms": {"benchmark": [0, 9], "prepar": [0, 5], "your": [0, 2, 7, 8, 9], "dataset": [0, 5, 8], "how": 0, "doe": 0, "work": 0, "deploi": 1, "router": [1, 5, 7], "us": [1, 2], "base": 1, "optim": 1, "metric": 1, "defin": 1, "threshold": 1, "custom": [1, 5, 6, 7, 8], "round": [1, 2, 7, 8, 9], "up": [1, 2, 7, 8, 9], "make": 2, "first": 2, "request": [2, 6], "get": [2, 4, 15, 16], "kei": 2, "find": 2, "model": 2, "provid": 2, "queri": [2, 6], "an": 2, "endpoint": [2, 5, 6, 8, 9], "python": [2, 6, 20], "packag": [2, 6], "openai": [2, 6], "api": [2, 4, 6], "format": 2, "compat": 2, "tool": 2, "sdk": 2, "open": 2, "interpret": 2, "On": [3, 17, 18], "prem": [3, 17], "imag": 3, "refer": 4, "get_credit": 4, "post": 4, "chat": [4, 11], "complet": 4, "rout": 5, "what": 5, "i": 5, "llm": [5, 6], "foundat": 5, "filter": 5, "maximis": 5, "throughput": 5, "fine": 5, "tune": 5, "train": [5, 7], "beta": [5, 7, 8, 9], "univers": 6, "authent": 6, "http": 6, "unifi": [6, 15, 16], "nodej": 6, "bill": 6, "advanc": 6, "featur": 6, "fallback": 6, "build": 7, "connect": 8, "stack": 8, "prerequisit": 8, "ad": 8, "qualiti": 9, "runtim": 9, "run": 9, "own": 9, "client": 12, "except": 13, "util": 14, "welcom": [15, 16], "start": [15, 16], "access": 17, "sso": 18, "singl": 18, "sign": 18, "openapi": 19, "specif": 19, "librari": 20}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"On-Prem access": [[17, "on-prem-access"]], "OpenAPI Specification": [[19, "openapi-specification"]], "SSO (Single Sign On)": [[18, "sso-single-sign-on"]], "Welcome to Unify!": [[15, "welcome-to-unify"], [16, "welcome-to-unify"]], "Getting Started": [[15, "getting-started"], [16, "getting-started"]], "API Reference": [[4, "api-reference"]], "GET /get_credits": [[4, "get-get-credits"]], "POST /chat/completions": [[4, "post-chat-completions"]], "Deploying a router": [[1, "deploying-a-router"]], "Using the base router": [[1, "using-the-base-router"]], "Optimizing a metric": [[1, "optimizing-a-metric"]], "Defining thresholds": [[1, "defining-thresholds"]], "Using a custom router": [[1, "using-a-custom-router"]], "Round Up": [[1, "round-up"], [2, "round-up"], [9, "round-up"], [8, "round-up"], [7, "round-up"]], "Making your first request": [[2, "making-your-first-request"]], "Getting a key": [[2, "getting-a-key"]], "Finding a model and provider": [[2, "finding-a-model-and-provider"]], "Querying an endpoint": [[2, "querying-an-endpoint"]], "Using the Python Package": [[2, "using-the-python-package"]], "Using the OpenAI API Format": [[2, "using-the-openai-api-format"]], "Compatible Tools": [[2, "compatible-tools"]], "OpenAI SDK": [[2, "openai-sdk"]], "Open Interpreter": [[2, "open-interpreter"]], "On-Prem Images": [[3, "on-prem-images"]], "Benchmarking": [[0, "benchmarking"]], "Preparing your dataset": [[0, "preparing-your-dataset"]], "Benchmarking your dataset": [[0, "benchmarking-your-dataset"]], "How does it work?": [[0, "how-does-it-work"]], "Benchmarking endpoints": [[9, "benchmarking-endpoints"]], "Quality benchmarks": [[9, "quality-benchmarks"], [9, "id4"]], "Runtime benchmarks": [[9, "runtime-benchmarks"], [9, "id2"]], "Running your own benchmarks (Beta)": [[9, "running-your-own-benchmarks-beta"]], "Connecting your stack": [[8, "connecting-your-stack"]], "Custom endpoints (Beta)": [[8, "custom-endpoints-beta"]], "Prerequisite": [[8, "prerequisite"]], "Adding the endpoints": [[8, "adding-the-endpoints"]], "Custom datasets": [[8, "custom-datasets"]], "Building a custom router": [[7, "building-a-custom-router"]], "Training a custom router (Beta)": [[7, "training-a-custom-router-beta"]], "Customizing your router (Beta)": [[7, "customizing-your-router-beta"]], "Universal API": [[6, "universal-api"]], "Authentication": [[6, "authentication"]], "Querying the API": [[6, "querying-the-api"]], "HTTP Request": [[6, "http-request"]], "Unify Python Package": [[6, "unify-python-package"]], "OpenAI Python Package": [[6, "openai-python-package"]], "OpenAI NodeJS Package": [[6, "openai-nodejs-package"]], "Billing": [[6, "billing"]], "Advanced features": [[6, "advanced-features"]], "Custom endpoints": [[6, "custom-endpoints"]], "LLM Fallbacks": [[6, "llm-fallbacks"]], "Routing": [[5, "routing"]], "What is LLM routing?": [[5, "what-is-llm-routing"]], "Foundation router": [[5, "foundation-router"]], "Filtering endpoints": [[5, "filtering-endpoints"]], "Maximising throughput": [[5, "maximising-throughput"]], "Fine-tuned custom router": [[5, "fine-tuned-custom-router"]], "Preparing a dataset": [[5, "preparing-a-dataset"]], "Training a router (beta)": [[5, "training-a-router-beta"]], "Python Library": [[20, "python-library"]], "Exceptions": [[13, "module-unify.exceptions"]], "Utils": [[14, "module-unify.utils"]], "Chat": [[11, "module-unify.chat"]], "Clients": [[12, "module-unify.clients"]]}, "indexentries": {"chatbot (class in unify.chat)": [[11, "unify.chat.ChatBot"]], "__init__() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.__init__"]], "clear_chat_history() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.clear_chat_history"]], "client (unify.chat.chatbot property)": [[11, "unify.chat.ChatBot.client"]], "endpoint (unify.chat.chatbot property)": [[11, "unify.chat.ChatBot.endpoint"]], "model (unify.chat.chatbot property)": [[11, "unify.chat.ChatBot.model"]], "module": [[11, "module-unify.chat"], [12, "module-unify.clients"], [13, "module-unify.exceptions"], [14, "module-unify.utils"]], "provider (unify.chat.chatbot property)": [[11, "unify.chat.ChatBot.provider"]], "run() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.run"]], "set_client() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.set_client"]], "set_endpoint() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.set_endpoint"]], "set_model() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.set_model"]], "set_provider() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.set_provider"]], "unify.chat": [[11, "module-unify.chat"]], "asyncunify (class in unify.clients)": [[12, "unify.clients.AsyncUnify"]], "unify (class in unify.clients)": [[12, "unify.clients.Unify"]], "__init__() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.__init__"]], "__init__() (unify.clients.unify method)": [[12, "unify.clients.Unify.__init__"]], "endpoint (unify.clients.asyncunify property)": [[12, "unify.clients.AsyncUnify.endpoint"]], "endpoint (unify.clients.unify property)": [[12, "unify.clients.Unify.endpoint"]], "generate() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.generate"]], "generate() (unify.clients.unify method)": [[12, "unify.clients.Unify.generate"]], "get_credit_balance() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.get_credit_balance"]], "get_credit_balance() (unify.clients.unify method)": [[12, "unify.clients.Unify.get_credit_balance"]], "model (unify.clients.asyncunify property)": [[12, "unify.clients.AsyncUnify.model"]], "model (unify.clients.unify property)": [[12, "unify.clients.Unify.model"]], "provider (unify.clients.asyncunify property)": [[12, "unify.clients.AsyncUnify.provider"]], "provider (unify.clients.unify property)": [[12, "unify.clients.Unify.provider"]], "set_endpoint() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.set_endpoint"]], "set_endpoint() (unify.clients.unify method)": [[12, "unify.clients.Unify.set_endpoint"]], "set_model() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.set_model"]], "set_model() (unify.clients.unify method)": [[12, "unify.clients.Unify.set_model"]], "set_provider() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.set_provider"]], "set_provider() (unify.clients.unify method)": [[12, "unify.clients.Unify.set_provider"]], "unify.clients": [[12, "module-unify.clients"]], "authenticationerror": [[13, "unify.exceptions.AuthenticationError"]], "badrequesterror": [[13, "unify.exceptions.BadRequestError"]], "conflicterror": [[13, "unify.exceptions.ConflictError"]], "internalservererror": [[13, "unify.exceptions.InternalServerError"]], "notfounderror": [[13, "unify.exceptions.NotFoundError"]], "permissiondeniederror": [[13, "unify.exceptions.PermissionDeniedError"]], "ratelimiterror": [[13, "unify.exceptions.RateLimitError"]], "unifyerror": [[13, "unify.exceptions.UnifyError"]], "unprocessableentityerror": [[13, "unify.exceptions.UnprocessableEntityError"]], "unify.exceptions": [[13, "module-unify.exceptions"]], "delete_dataset() (in module unify.utils)": [[14, "unify.utils.delete_dataset"]], "delete_evaluation() (in module unify.utils)": [[14, "unify.utils.delete_evaluation"]], "download_dataset() (in module unify.utils)": [[14, "unify.utils.download_dataset"]], "evaluate() (in module unify.utils)": [[14, "unify.utils.evaluate"]], "list_datasets() (in module unify.utils)": [[14, "unify.utils.list_datasets"]], "list_endpoints() (in module unify.utils)": [[14, "unify.utils.list_endpoints"]], "list_evaluations() (in module unify.utils)": [[14, "unify.utils.list_evaluations"]], "list_models() (in module unify.utils)": [[14, "unify.utils.list_models"]], "list_providers() (in module unify.utils)": [[14, "unify.utils.list_providers"]], "unify.utils": [[14, "module-unify.utils"]], "upload_dataset_from_dictionary() (in module unify.utils)": [[14, "unify.utils.upload_dataset_from_dictionary"]], "upload_dataset_from_file() (in module unify.utils)": [[14, "unify.utils.upload_dataset_from_file"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["concepts/benchmarks", "concepts/deploy_router", "concepts/first_request", "concepts/images", "concepts/reference", "concepts/router", "concepts/unify_api", "console/building_router", "console/connecting_stack", "console/running_benchmarks", "docs/unify/unify", "docs/unify/unify/unify.chat", "docs/unify/unify/unify.clients", "docs/unify/unify/unify.exceptions", "docs/unify/unify/unify.utils", "home/home", "index", "on_prem/on_prem_access", "on_prem/sso", "tools/openapi", "tools/python_library"], "filenames": ["concepts/benchmarks.rst", "concepts/deploy_router.rst", "concepts/first_request.rst", "concepts/images.rst", "concepts/reference.rst", "concepts/router.rst", "concepts/unify_api.rst", "console/building_router.rst", "console/connecting_stack.rst", "console/running_benchmarks.rst", "docs/unify/unify.rst", "docs/unify/unify/unify.chat.rst", "docs/unify/unify/unify.clients.rst", "docs/unify/unify/unify.exceptions.rst", "docs/unify/unify/unify.utils.rst", "home/home.rst", "index.rst", "on_prem/on_prem_access.rst", "on_prem/sso.rst", "tools/openapi.rst", "tools/python_library.rst"], "titles": ["Benchmarking", "Deploying a router", "Making your first request", "On-Prem Images", "API Reference", "Routing", "Universal API", "Building a custom router", "Connecting your stack", "Benchmarking endpoints", "<no title>", "Chat", "Clients", "Exceptions", "Utils", "Welcome to Unify!", "Home", "On-Prem access", "SSO (Single Sign On)", "OpenAPI Specification", "Python Library"], "terms": {"when": [0, 1, 2, 4, 5, 7, 12], "compar": [0, 9, 15, 16], "llm": [0, 1, 2, 8, 9, 11, 15, 16], "i": [0, 1, 2, 4, 6, 7, 8, 9, 11, 12, 14, 18], "constant": 0, "tradeoff": 0, "make": [0, 1, 4, 7, 12], "between": [0, 2, 5, 6, 7, 12], "qualiti": [0, 5, 7, 15, 16], "cost": [0, 1, 5, 6, 7, 9, 15, 16], "latenc": [0, 1, 5, 7, 9], "stronger": 0, "model": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18], "ar": [0, 1, 2, 5, 6, 7, 8, 9], "gener": [0, 1, 2, 4, 5, 6, 12, 15, 16, 18], "slower": 0, "more": [0, 2, 5, 9, 12], "expens": 0, "sometim": [0, 6], "overkil": 0, "task": [0, 1, 5, 7, 9], "hand": [0, 9], "complic": 0, "matter": 0, "further": [0, 7, 12], "new": [0, 2, 5, 6, 7, 8, 9], "releas": [0, 5], "weekli": 0, "each": [0, 1, 5, 6, 7, 9, 14, 15, 16], "claim": 0, "state": 0, "art": 0, "data": [0, 1, 7], "let": [0, 1, 2, 7, 8, 9, 15, 16], "you": [0, 1, 2, 4, 5, 6, 7, 8, 9, 15, 16, 18], "see": [0, 6, 7, 9], "differ": [0, 4, 5, 7, 9, 15, 16], "perform": [0, 1, 7, 9, 15, 16], "can": [0, 1, 2, 4, 5, 6, 7, 8, 9, 15, 16, 18], "relat": 0, "live": [0, 5, 6], "stat": 0, "pull": [0, 18], "from": [0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 15, 16, 18], "our": [0, 1, 2, 6, 7, 8, 9, 15, 16, 17, 18], "runtim": [0, 5, 6], "come": [0, 4, 5, 6], "out": [0, 2, 5, 6], "simpli": [0, 2, 9, 15, 16], "re": [0, 7, 9, 15, 16, 18], "run": [0, 2, 6, 7, 8, 11, 18], "thei": [0, 5, 6], "first": [0, 1, 4, 5, 6, 7, 9], "creat": [0, 2, 4, 6, 7, 8], "which": [0, 4, 5, 6, 7, 9, 15, 16, 18], "repres": [0, 11], "want": [0, 1, 2, 7, 8, 9], "evalu": [0, 9, 14], "need": [0, 1, 2, 5, 6, 7, 8, 9, 15, 16], "list": [0, 2, 6, 7, 9, 12, 14, 15, 16], "prompt": [0, 1, 5, 6, 8, 9, 12, 14, 15, 16], "option": [0, 1, 5, 7, 8, 11, 12, 14], "includ": [0, 1, 7, 8, 9], "refer": [0, 5, 8], "gold": 0, "standard": [0, 6, 8], "answer": [0, 5, 8], "contain": [0, 2, 5, 6, 8, 9, 12, 14], "tend": [0, 9], "get": [0, 1, 5, 6, 11, 12, 14, 17], "accur": 0, "The": [0, 2, 4, 5, 6, 7, 8, 9, 11, 12, 18], "file": [0, 2, 5, 8, 14, 18], "itself": 0, "should": [0, 2, 6, 8, 9, 18], "jsonl": [0, 5, 8], "format": [0, 4, 5, 6, 11, 12, 15, 16], "one": [0, 1, 2, 4, 5, 6, 8, 9, 15, 16], "entri": [0, 5], "per": [0, 1, 7], "line": [0, 2], "exampl": [0, 1, 2, 4, 5, 6, 7, 8], "below": [0, 1, 2, 7, 8, 9], "thi": [0, 1, 2, 4, 5, 6, 7, 8, 9, 14, 18], "ref_answ": [0, 5], "second": [0, 1, 7], "us": [0, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18], "least": [0, 9], "50": 0, "most": [0, 5, 8], "result": [0, 5, 7, 8, 9], "current": [0, 1, 4, 6, 7, 9], "an": [0, 1, 5, 6, 7, 8, 11, 12, 14], "maximum": 0, "limit": [0, 2, 5, 6], "500": [0, 13], "we": [0, 1, 2, 5, 6, 7, 8, 9, 15, 16], "don": [0, 4, 7], "t": [0, 1, 2, 4, 5, 7, 9], "much": [0, 1, 5], "extra": 0, "detail": [0, 1, 2, 4, 6, 7, 18], "past": 0, "250": 0, "In": [0, 1, 2, 5, 6, 7, 8, 9], "dashboard": [0, 5, 7, 9], "click": [0, 5, 7, 8, 9], "select": [0, 5, 7, 9], "open": [0, 7, 9], "interfac": [0, 1, 2, 5, 6, 8, 9, 15, 16], "upload": [0, 2, 5, 7, 8, 9, 14], "finish": [0, 5], "ll": [0, 1, 2, 5, 7, 8, 9], "receiv": [0, 5, 7], "email": [0, 5, 7], "graph": [0, 5, 7, 9], "displai": [0, 5, 7, 9], "x": [0, 2, 4, 6, 7, 9, 18], "axi": [0, 9], "set": [0, 1, 2, 6, 7, 8, 11, 12], "time": [0, 1, 5, 6, 7, 9], "token": [0, 1, 5, 6, 7, 9, 12], "inter": [0, 1, 5, 7], "either": [0, 6, 7, 14], "linear": 0, "log": 0, "scale": 0, "gpt4o": 0, "judg": 0, "cf": 0, "http": [0, 2, 4, 12, 13, 14, 18], "arxiv": 0, "org": 0, "ab": 0, "2306": 0, "05685": 0, "": [0, 1, 2, 5, 6, 7, 8, 9, 12, 15, 16, 18], "respons": [0, 1, 2, 4, 5, 6, 12, 14, 18], "section": [1, 2, 7, 8, 9], "learn": [1, 2, 4, 5, 7, 8, 9], "how": [1, 2, 5, 6, 7, 8, 9], "unifi": [1, 2, 4, 7, 8, 11, 12, 13, 14, 18], "through": [1, 2, 6, 7, 8, 9], "api": [1, 5, 7, 8, 11, 12, 14, 15, 16, 18], "If": [1, 2, 4, 6, 7, 8, 9, 11, 12, 14], "haven": [1, 2, 9], "done": [1, 2, 7, 9], "so": [1, 2, 6, 7, 8, 9, 15, 16], "recommend": [1, 2, 9], "request": [1, 4, 7, 9, 13, 18], "familiar": 1, "leverag": 1, "inform": [1, 7, 9], "benchmark": [1, 2, 5, 6, 7, 8, 15, 16], "automat": [1, 6, 7], "rout": [1, 2, 7, 8, 15, 16], "best": [1, 5, 7, 15, 16], "provid": [1, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16], "choos": [1, 2, 5, 7], "valu": [1, 9, 11, 12, 14], "chang": [1, 5, 7, 9, 15, 16], "over": [1, 5, 9], "dynam": 1, "ensur": [1, 7, 9], "alwai": [1, 9], "without": 1, "have": [1, 2, 4, 5, 6, 7, 8, 9, 15, 16, 18], "monitor": 1, "yourself": 1, "To": [1, 2, 4, 5, 6, 9, 17], "onli": [1, 2, 6, 7, 9], "provier": 1, "name": [1, 2, 4, 6, 7, 8, 9, 11, 12, 14], "support": [1, 2, 6, 14], "configur": [1, 2, 5, 7, 9], "follow": [1, 4, 5, 6], "config": 1, "lowest": 1, "input": [1, 4, 15, 16], "output": [1, 6, 9, 12, 15, 16], "itl": 1, "ttft": [1, 9], "highest": 1, "tk": 1, "sec": [1, 9], "For": [1, 2, 5, 7, 8, 9], "e": [1, 2, 5, 7, 9], "g": [1, 2, 7, 9], "python": [1, 15, 16, 18], "packag": [1, 15, 16], "endpoint": [1, 4, 7, 11, 12, 14, 15, 16], "import": [1, 2, 6, 15, 16, 18], "o": [1, 2], "assum": [1, 2, 7, 8], "ad": [1, 2, 9], "unify_kei": [1, 2, 11, 12, 14, 15, 16], "your": [1, 4, 5, 6, 12, 15, 16, 18], "environ": [1, 2, 7, 11, 12, 14, 15, 16], "variabl": [1, 2, 11, 12, 14, 15, 16], "otherwis": [1, 2, 12, 14], "would": [1, 2, 6, 7, 8, 9], "specifi": [1, 2, 4, 5, 6, 7, 8, 9, 14], "api_kei": [1, 2, 6, 11, 12, 14, 15, 16, 18], "argument": [1, 2, 4, 15, 16], "mistral": [1, 2, 6, 9], "7b": [1, 2, 6, 9], "instruct": [1, 2, 6, 9], "v0": [1, 2, 4, 6, 9], "3": [1, 2, 4, 6, 7, 9, 18], "explain": [1, 2, 4, 9, 18], "who": [1, 2, 4, 18], "newton": [1, 2, 4, 18], "wa": [1, 2, 4, 12, 14, 18], "hi": [1, 2, 4, 6, 18], "entir": [1, 2, 4, 9, 18], "theori": [1, 2, 4, 18], "gravit": [1, 2, 4, 18], "give": [1, 2, 4, 18], "long": [1, 2, 4, 18], "pleas": [1, 2, 4, 18], "all": [1, 2, 4, 6, 7, 8, 9, 13, 14, 15, 16, 18], "achiev": [1, 2, 4, 18], "addition": 1, "multipl": 1, "other": [1, 2, 6, 7, 9], "featur": 1, "enabl": [1, 7], "ani": [1, 2, 6, 7, 9, 15, 16], "whose": [1, 14], "lower": [1, 12], "than": [1, 5, 9], "specif": [1, 2, 4, 5, 9, 14], "just": [1, 2, 9], "append": [1, 4], "float": [1, 12], "prefer": 1, "mode": 1, "keep": 1, "thing": 1, "simpl": 1, "alias": 1, "oc": 1, "ic": 1, "ot": 1, "illustr": 1, "some": [1, 2, 6, 7, 9], "0": [1, 2, 4, 6, 7, 12], "5input": 1, "case": [1, 2, 7, 9, 15, 16], "ha": [1, 2, 6, 7], "smaller": [1, 5], "5": 1, "credit": [1, 4, 6, 11, 12], "million": 1, "1output": 1, "likewis": [1, 2, 6], "scenario": 1, "direct": 1, "offer": [1, 17], "1": [1, 5, 12], "5ic": 1, "15itl": 1, "now": [1, 2, 7, 8, 9, 15, 16, 18], "someth": [1, 6, 9], "similar": [1, 5], "alia": 1, "also": [1, 2, 7, 8, 9, 15, 16], "consid": 1, "less": 1, "15": 1, "m": 1, "depend": [1, 7], "might": 1, "where": [1, 2, 7, 9, 12], "meet": [1, 6, 7], "criteria": 1, "render": 1, "unfulfil": 1, "404": [1, 13], "error": [1, 4, 12, 13, 14], "correspond": [1, 2, 4, 7, 9], "explan": 1, "detect": 1, "polici": 1, "do": [1, 2, 8], "like": [1, 2, 6, 7, 8, 9, 12, 15, 16, 18], "won": 1, "work": [1, 7], "sinc": 1, "price": 1, "yet": [1, 4, 7], "001ic": 1, "status_cod": [1, 2], "cheapest": 1, "fallback": 1, "payload": [1, 2, 6], "train": [1, 9], "befor": [1, 2, 7, 9], "id": [1, 2, 4, 6, 7], "same": [1, 2, 5, 7], "call": [1, 7, 17], "code": [1, 2, 6], "send": [1, 4, 9], "gpt": [1, 7, 15, 16], "claud": [1, 7, 18], "llama3": [1, 7], "anthropic_8": [1, 7], "28e": [1, 7], "03_4": [1, 7], "66e": [1, 7], "4_1": [1, 7], "00e": [1, 7], "06": [1, 6, 7], "queri": [1, 4, 5, 7, 8], "curl": [1, 2, 4, 6, 18], "among": 1, "page": [1, 2, 4, 6, 7, 9], "That": [1, 7, 8, 9, 15, 16], "know": [1, 2, 8, 9], "care": 1, "about": [1, 4, 5, 9], "start": [1, 2, 11], "applic": [1, 2, 4, 6, 7, 13, 18], "across": [2, 7, 8, 9], "alreadi": [2, 7, 8], "sign": [2, 4, 6, 15, 16], "consol": [2, 6, 7, 8, 9], "greet": 2, "There": [2, 6, 8, 9], "link": 2, "interact": [2, 4, 6, 11, 12], "suspect": 2, "leak": 2, "wai": [2, 6, 7, 8], "safe": 2, "regener": 2, "replac": [2, 6], "old": 2, "workflow": [2, 6], "balanc": [2, 4, 6, 7], "account": [2, 4, 6, 7, 9, 12], "both": [2, 6, 7], "identifi": 2, "given": [2, 4, 14], "go": [2, 4, 5, 6, 7, 9, 15, 16], "copi": [2, 5, 7], "top": [2, 6, 9], "row": 2, "tabl": [2, 9], "v2": 2, "show": [2, 7, 8, 9, 11], "firework": [2, 6], "ai": [2, 4, 6, 8], "custom": [2, 9, 13, 15, 16], "abl": [2, 5], "easiest": [2, 15, 16], "unifyai": [2, 6, 15, 16, 18], "instal": [2, 6, 15, 16], "pip": [2, 6, 15, 16], "script": 2, "insert": 2, "your_api_kei": [2, 4, 6], "env": [2, 18], "project": 2, "pass": [2, 15, 16], "client": [2, 6, 11, 15, 16, 18], "store": 2, "safeti": 2, "remain": [2, 9, 12], "readi": [2, 7, 8, 15, 16], "method": 2, "abov": 2, "return": [2, 6, 11, 12, 14], "string": [2, 5, 6, 12, 15, 16], "access": [2, 6, 7, 9, 11, 12, 18], "coupl": 2, "list_model": [2, 14], "list_provid": [2, 14], "addit": 2, "synchron": 2, "asynchron": [2, 12], "well": [2, 6, 7, 8], "stream": [2, 4, 6, 12], "check": [2, 9], "repo": 2, "text": [2, 4, 6], "chat": [2, 5, 6, 7, 18], "complet": [2, 5, 6, 7, 9, 18], "wouldn": 2, "normal": 2, "allow": [2, 5, 7, 9], "bypass": 2, "model_nam": [2, 11, 12], "provider_nam": [2, 11, 12], "been": [2, 7], "deploi": [2, 6, 7, 9, 15, 16], "languag": [2, 6], "post": [2, 6, 18], "h": [2, 4, 6, 18], "accept": [2, 4, 6, 18], "json": [2, 4, 6, 12, 14, 18], "author": [2, 4, 6], "bearer": [2, 4, 6], "your_unify_kei": [2, 6], "content": [2, 4, 6, 12, 14, 18], "type": [2, 4, 6, 11, 12, 14, 18], "d": [2, 4, 6, 7, 18], "messag": [2, 4, 6, 12, 18], "role": [2, 4, 6, 18], "user": [2, 4, 6, 7, 12, 18], "true": [2, 6, 12], "Or": 2, "url": [2, 6], "header": [2, 6], "print": [2, 6], "200": [2, 4], "chunk": [2, 6, 12], "iter_cont": 2, "chunk_siz": 2, "1024": [2, 12], "decod": 2, "utf": 2, "8": [2, 12], "els": [2, 9], "doc": 2, "avail": [2, 4, 5, 8, 14, 15, 16], "here": [2, 4, 5, 7], "thank": 2, "easili": 2, "integr": [2, 8], "lot": 2, "switch": 2, "base_url": [2, 6, 18], "sai": [2, 6], "test": [2, 7, 9, 15, 16], "word": 2, "showcas": 2, "function": 2, "choic": [2, 4, 6, 15, 16], "delta": [2, 6], "end": [2, 6], "take": [2, 7], "look": [2, 6, 7, 18], "snippet": 2, "offlin": 2, "api_bas": 2, "order": [2, 9], "insert_model": 2, "next": [2, 5, 6, 7, 8, 9], "lorem": [3, 19, 20], "ipsum": [3, 19, 20], "welcom": 4, "resourc": 4, "up": [4, 6, 12, 15, 16], "kei": [4, 6, 8, 11, 12, 14, 15, 16], "retriev": [4, 11, 12], "authent": 4, "ok": 4, "success": [4, 12, 14], "oper": 4, "associ": [4, 14], "corresponding_user_id": 4, "232": [4, 6], "32": [4, 6], "401": [4, 13], "unauthor": [4, 13], "invalid": 4, "403": [4, 13], "forbidden": [4, 13], "Not": [4, 13], "host": [4, 8], "openai": [4, 8, 11, 12, 15, 16], "sure": 4, "its": [4, 6, 7], "after": [4, 5, 7], "llama": [4, 6, 7, 9], "8b": [4, 6], "anyscal": 4, "fals": [4, 11, 12], "schema": 4, "object": [4, 6, 11, 12], "defin": 4, "1704999905": 4, "meta": 4, "hf": 4, "xr868c": 4, "t4z": 4, "tkltfxxzsvq57wmhxb34el5zuuxsatfu": 4, "usag": [4, 6], "completion_token": [4, 6], "512": 4, "prompt_token": [4, 6], "34": 4, "total_token": [4, 6], "546": 4, "finish_reason": [4, 6], "length": [4, 9], "index": [4, 6], "isaac": 4, "1643": 4, "1727": 4, "assist": [4, 6], "422": [4, 13], "unprocess": [4, 13], "entiti": [4, 13], "flexibl": 5, "handl": [5, 6, 15, 16], "advantag": 5, "sever": [5, 15, 16], "reason": [5, 6], "small": 5, "faster": 5, "cheaper": 5, "wherea": 5, "bigger": 5, "capabl": 5, "often": 5, "rang": 5, "difficulti": 5, "everi": [5, 6], "week": 5, "strength": 5, "weak": 5, "continu": 5, "improv": [5, 15, 16], "ride": 5, "wave": 5, "abil": 5, "minimis": 5, "base": [5, 7, 11, 12, 13], "statist": 5, "purpos": 5, "wide": 5, "varieti": [5, 8], "green": 5, "star": [5, 9], "q": 5, "c": 5, "4": [5, 7, 12], "65e": 5, "03": 5, "2": [5, 12], "08e": 5, "05": 5, "07e": 5, "paramet": [5, 6], "stand": 5, "rel": 5, "weigh": 5, "customiz": 5, "meaning": 5, "directli": 5, "restrict": 5, "them": [5, 7, 9], "model1": 5, "model2": 5, "model3": 5, "provider1": 5, "provider2": 5, "rate": 5, "hit": 5, "move": [5, 7], "mean": [5, 18], "higher": [5, 12], "singl": [5, 6, 12, 15, 16], "ve": [5, 8, 9], "found": [5, 13], "those": [5, 8], "product": [5, 6], "visualis": 5, "form": [5, 6], "xxx": 5, "yyi": 5, "accuraci": 5, "final": [5, 7], "system": [5, 12, 15, 16], "onc": [5, 7, 8, 9, 18], "sea": 6, "own": [6, 8, 15, 16], "subtl": 6, "nuanc": 6, "A": [6, 7, 12, 14], "common": [6, 8], "One": 6, "program": 6, "three": 6, "command": 6, "termin": 6, "unify_api_kei": 6, "hello": [6, 15, 16], "field": 6, "find": [6, 9], "made": 6, "togeth": 6, "1718888877": 6, "896bfc1ae84271aa": 6, "lhr": 6, "25": 6, "13": 6, "38": 6, "7": 6, "6e": 6, "stop": [6, 12], "It": [6, 15, 16], "nice": 6, "help": 6, "seed": 6, "11563975138181362140": 6, "via": [6, 8], "number": [6, 12], "total": [6, 14], "u": [6, 9, 17], "temperatur": [6, 12], "max_token": [6, 12], "mai": [6, 7], "compat": 6, "download": [6, 14], "document": 6, "readm": 6, "sampl": [6, 12], "infer": 6, "design": [6, 9], "exist": 6, "straightforward": 6, "try": 6, "rememb": 6, "const": 6, "baseurl": 6, "apikei": 6, "await": 6, "again": [6, 8], "manag": [6, 15, 16], "spend": 6, "behind": [6, 9], "scene": 6, "refil": 6, "get_credit": 6, "your_user_id": 6, "fine": [6, 7], "tune": [6, 7, 9], "add": [6, 7, 8, 9, 15, 16], "relev": 6, "individu": [6, 15, 16], "outag": 6, "disrupt": 6, "combat": 6, "down": 6, "fail": 6, "until": [6, 15, 16], "succe": 6, "reach": 6, "tag": 6, "becom": 6, "model_a": 6, "provider_a": 6, "model_b": 6, "provider_b": 6, "actual": 6, "went": 6, "window": 7, "dataset": [7, 9, 14], "intend": 7, "earlier": [7, 9], "variant": 7, "dropdown": [7, 9], "notic": 7, "becaus": 7, "doe": 7, "button": [7, 8], "submit": [7, 9], "job": [7, 9], "schedul": 7, "behalf": [7, 8], "ahead": 7, "duplic": 7, "previous": 7, "calls1": [7, 9], "call2": 7, "q1": 7, "q2": 7, "repeat": 7, "howev": 7, "70b": 7, "trigger": [7, 9], "manual": 7, "track": [7, 9], "progress": [7, 9], "With": [7, 15, 16], "stage": 7, "accordingli": 7, "visual": [7, 9], "step": [7, 8, 18], "explor": [7, 9], "variou": [7, 9], "possibl": 7, "trade": 7, "off": [7, 8], "speed": [7, 9, 15, 16], "variat": 7, "These": 7, "As": [7, 9], "point": [7, 9], "plot": [7, 9], "view": [7, 9], "constrain": 7, "search": 7, "space": 7, "certain": 7, "deploy": 7, "guarante": 7, "requir": 7, "Of": 7, "cours": 7, "visibl": 7, "remov": [7, 9, 14], "presum": 7, "anthrop": [7, 18], "properli": 7, "save": [7, 14, 15, 16], "moment": 7, "therefor": 7, "appli": 7, "altern": [7, 8], "had": 7, "overwritten": 7, "clauc": 7, "place": 7, "legend": [7, 9], "underneath": 7, "parent": 7, "slightli": 7, "reduc": 7, "amount": 7, "decid": 7, "stick": 7, "decis": 7, "avoid": [7, 15, 16], "immedi": 7, "futur": 7, "appear": [7, 9], "full": 7, "frequenc": 7, "gpt4": 7, "42": 7, "29": 7, "calls2": [7, 9], "18": 7, "11": 7, "metric": [7, 9], "ax": 7, "verifi": 7, "session": 7, "perman": 7, "veri": 7, "happi": [7, 9], "forget": 7, "delet": [7, 14], "anytim": 7, "press": [7, 9], "besid": 7, "clipboard": 7, "along": 7, "default": [7, 9, 11, 12, 14], "shelf": 8, "azur": 8, "ml": 8, "catalog": 8, "vertex": 8, "garden": 8, "aw": 8, "bedrock": 8, "whole": 8, "major": 8, "cloud": 8, "regardless": 8, "expos": [8, 9], "adher": 8, "got": 8, "said": 8, "screen": 8, "local": [8, 14, 18], "build": 8, "label": [8, 9], "preview": 8, "imag": [8, 9], "router": [8, 9], "navig": 9, "ones": 9, "methodologi": 9, "head": 9, "By": 9, "six": 9, "openherm": 9, "shown": 9, "On": 9, "against": 9, "scatter": 9, "replot": 9, "similarili": 9, "score": 9, "updat": 9, "averag": 9, "granular": 9, "outsid": 9, "popular": 9, "period": 9, "suit": 9, "dedic": 9, "region": 9, "sequenc": [9, 12], "latest": [9, 18], "sort": 9, "icon": 9, "column": 9, "reveal": 9, "pattern": 9, "figur": 9, "fit": 9, "resum": 9, "previou": 9, "privat": 9, "server": [9, 13], "vari": 9, "fastest": 9, "under": 9, "ip": 9, "address": 9, "lock": 9, "indic": 9, "necessari": 9, "subsect": 9, "separ": 9, "expand": 9, "pair": 9, "histori": [9, 11, 12], "mixtral": 9, "financ": 9, "alongsid": 9, "foundat": 9, "class": [11, 12, 13], "chatbot": 11, "none": [11, 12, 14], "agent": 11, "__init__": [11, 12], "initi": [11, 12], "arg": [11, 12, 14], "str": [11, 12, 14], "uploaded_bi": [11, 12], "must": [11, 12, 14], "attempt": [11, 12], "rais": [11, 12, 13, 14], "unifyerror": [11, 12, 13], "miss": [11, 12], "clear_chat_histori": 11, "clear": 11, "properti": [11, 12], "dar201": [11, 12], "noqa": [11, 12], "show_credit": 11, "show_provid": 11, "loop": 11, "bool": [11, 12], "whether": 11, "consumpt": 11, "set_client": 11, "dar101": [11, 12], "set_endpoint": [11, 12], "set_model": [11, 12], "set_provid": [11, 12], "asyncunifi": 12, "async": 12, "user_prompt": 12, "system_prompt": 12, "union": 12, "asyncgener": 12, "dict": [12, 14], "dictionari": [12, 14], "convers": 12, "int": 12, "max": 12, "what": [12, 18], "random": [12, 15, 16], "while": 12, "focus": 12, "determinist": 12, "yield": 12, "occur": 12, "dure": 12, "get_credit_bal": 12, "left": 12, "badrequesterror": [12, 13, 14], "valueerror": [12, 14], "pars": [12, 14], "authenticationerror": 13, "400": 13, "bad": 13, "conflicterror": 13, "409": 13, "conflict": 13, "internalservererror": 13, "intern": 13, "notfounderror": 13, "permissiondeniederror": 13, "ratelimiterror": 13, "429": 13, "too": 13, "mani": 13, "unprocessableentityerror": 13, "delete_dataset": 14, "platform": 14, "path": 14, "info": 14, "msg": 14, "delete_evalu": 14, "download_dataset": 14, "list_dataset": 14, "fetch": 14, "list_endpoint": [14, 15, 16], "empti": 14, "list_evalu": 14, "upload_dataset_from_dictionari": 14, "upload_dataset_from_fil": 14, "mission": [15, 16], "simplifi": [15, 16], "landscap": [15, 16], "No": [15, 16], "eval": [15, 16], "iter": [15, 16], "app": [15, 16], "perfect": [15, 16], "Then": [15, 16, 18], "4o": [15, 16], "your_kei": [15, 16], "world": [15, 16], "util": [15, 16], "fingertip": [15, 16], "book": 17, "prem": 18, "microservic": 18, "grant": 18, "docker": 18, "dt": 18, "p": 18, "8000": 18, "env_file_path": 18, "deepinfra_api_kei": 18, "stability_api_kei": 18, "mistral_ai_api_kei": 18, "perplexity_ai_api_kei": 18, "anyscale_api_kei": 18, "octoai_api_kei": 18, "openai_api_kei": 18, "together_ai_api_kei": 18, "replicate_api_kei": 18, "lepton_ai_api_kei": 18, "fireworks_ai_api_kei": 18, "anthropic_api_kei": 18, "vertexai_service_acc_json": 18, "vertexai_gcloud_path": 18, "vertexai_project": 18, "vertexai_loc": 18, "servic": 18, "weather": 18, "san": 18, "francisco": 18, "tokyo": 18, "pari": 18, "localhost": 18, "haiku": 18, "random_key_wont_be_us": 18, "life": 18}, "objects": {"unify": [[11, 0, 0, "-", "chat"], [12, 0, 0, "-", "clients"], [13, 0, 0, "-", "exceptions"], [14, 0, 0, "-", "utils"]], "unify.chat": [[11, 1, 1, "", "ChatBot"]], "unify.chat.ChatBot": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "clear_chat_history"], [11, 3, 1, "", "client"], [11, 3, 1, "", "endpoint"], [11, 3, 1, "", "model"], [11, 3, 1, "", "provider"], [11, 2, 1, "", "run"], [11, 2, 1, "", "set_client"], [11, 2, 1, "", "set_endpoint"], [11, 2, 1, "", "set_model"], [11, 2, 1, "", "set_provider"]], "unify.clients": [[12, 1, 1, "", "AsyncUnify"], [12, 1, 1, "", "Unify"]], "unify.clients.AsyncUnify": [[12, 2, 1, "", "__init__"], [12, 3, 1, "", "endpoint"], [12, 2, 1, "", "generate"], [12, 2, 1, "", "get_credit_balance"], [12, 3, 1, "", "model"], [12, 3, 1, "", "provider"], [12, 2, 1, "", "set_endpoint"], [12, 2, 1, "", "set_model"], [12, 2, 1, "", "set_provider"]], "unify.clients.Unify": [[12, 2, 1, "", "__init__"], [12, 3, 1, "", "endpoint"], [12, 2, 1, "", "generate"], [12, 2, 1, "", "get_credit_balance"], [12, 3, 1, "", "model"], [12, 3, 1, "", "provider"], [12, 2, 1, "", "set_endpoint"], [12, 2, 1, "", "set_model"], [12, 2, 1, "", "set_provider"]], "unify.exceptions": [[13, 4, 1, "", "AuthenticationError"], [13, 4, 1, "", "BadRequestError"], [13, 4, 1, "", "ConflictError"], [13, 4, 1, "", "InternalServerError"], [13, 4, 1, "", "NotFoundError"], [13, 4, 1, "", "PermissionDeniedError"], [13, 4, 1, "", "RateLimitError"], [13, 4, 1, "", "UnifyError"], [13, 4, 1, "", "UnprocessableEntityError"]], "unify.utils": [[14, 5, 1, "", "delete_dataset"], [14, 5, 1, "", "delete_evaluation"], [14, 5, 1, "", "download_dataset"], [14, 5, 1, "", "evaluate"], [14, 5, 1, "", "list_datasets"], [14, 5, 1, "", "list_endpoints"], [14, 5, 1, "", "list_evaluations"], [14, 5, 1, "", "list_models"], [14, 5, 1, "", "list_providers"], [14, 5, 1, "", "upload_dataset_from_dictionary"], [14, 5, 1, "", "upload_dataset_from_file"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:property", "4": "py:exception", "5": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "property", "Python property"], "4": ["py", "exception", "Python exception"], "5": ["py", "function", "Python function"]}, "titleterms": {"benchmark": [0, 9], "prepar": [0, 5], "your": [0, 2, 7, 8, 9], "dataset": [0, 5, 8], "how": 0, "doe": 0, "work": 0, "deploi": 1, "router": [1, 5, 7], "us": [1, 2], "base": 1, "optim": 1, "metric": 1, "defin": 1, "threshold": 1, "custom": [1, 5, 6, 7, 8], "round": [1, 2, 7, 8, 9], "up": [1, 2, 7, 8, 9], "make": 2, "first": 2, "request": [2, 6], "get": [2, 4, 15, 16], "kei": 2, "find": 2, "model": 2, "provid": 2, "queri": [2, 6], "an": 2, "endpoint": [2, 5, 6, 8, 9], "python": [2, 6, 20], "packag": [2, 6], "openai": [2, 6], "api": [2, 4, 6], "format": 2, "compat": 2, "tool": 2, "sdk": 2, "open": 2, "interpret": 2, "On": [3, 17, 18], "prem": [3, 17], "imag": 3, "refer": 4, "get_credit": 4, "post": 4, "chat": [4, 11], "complet": 4, "rout": 5, "what": 5, "i": 5, "llm": [5, 6], "foundat": 5, "filter": 5, "maximis": 5, "throughput": 5, "fine": 5, "tune": 5, "train": [5, 7], "beta": [5, 7, 8, 9], "univers": 6, "authent": 6, "http": 6, "unifi": [6, 15, 16], "nodej": 6, "bill": 6, "advanc": 6, "featur": 6, "fallback": 6, "build": 7, "connect": 8, "stack": 8, "prerequisit": 8, "ad": 8, "qualiti": 9, "runtim": 9, "run": 9, "own": 9, "client": 12, "except": 13, "util": 14, "welcom": [15, 16], "start": [15, 16], "access": 17, "sso": 18, "singl": 18, "sign": 18, "openapi": 19, "specif": 19, "librari": 20}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Welcome to Unify!": [[16, "welcome-to-unify"], [15, "welcome-to-unify"]], "Getting Started": [[16, "getting-started"], [15, "getting-started"]], "OpenAPI Specification": [[19, "openapi-specification"]], "SSO (Single Sign On)": [[18, "sso-single-sign-on"]], "On-Prem access": [[17, "on-prem-access"]], "API Reference": [[4, "api-reference"]], "GET /get_credits": [[4, "get-get-credits"]], "POST /chat/completions": [[4, "post-chat-completions"]], "Benchmarking": [[0, "benchmarking"]], "Preparing your dataset": [[0, "preparing-your-dataset"]], "Benchmarking your dataset": [[0, "benchmarking-your-dataset"]], "How does it work?": [[0, "how-does-it-work"]], "Deploying a router": [[1, "deploying-a-router"]], "Using the base router": [[1, "using-the-base-router"]], "Optimizing a metric": [[1, "optimizing-a-metric"]], "Defining thresholds": [[1, "defining-thresholds"]], "Using a custom router": [[1, "using-a-custom-router"]], "Round Up": [[1, "round-up"], [2, "round-up"], [7, "round-up"], [9, "round-up"], [8, "round-up"]], "On-Prem Images": [[3, "on-prem-images"]], "Making your first request": [[2, "making-your-first-request"]], "Getting a key": [[2, "getting-a-key"]], "Finding a model and provider": [[2, "finding-a-model-and-provider"]], "Querying an endpoint": [[2, "querying-an-endpoint"]], "Using the Python Package": [[2, "using-the-python-package"]], "Using the OpenAI API Format": [[2, "using-the-openai-api-format"]], "Compatible Tools": [[2, "compatible-tools"]], "OpenAI SDK": [[2, "openai-sdk"]], "Open Interpreter": [[2, "open-interpreter"]], "Python Library": [[20, "python-library"]], "Building a custom router": [[7, "building-a-custom-router"]], "Training a custom router (Beta)": [[7, "training-a-custom-router-beta"]], "Customizing your router (Beta)": [[7, "customizing-your-router-beta"]], "Universal API": [[6, "universal-api"]], "Authentication": [[6, "authentication"]], "Querying the API": [[6, "querying-the-api"]], "HTTP Request": [[6, "http-request"]], "Unify Python Package": [[6, "unify-python-package"]], "OpenAI Python Package": [[6, "openai-python-package"]], "OpenAI NodeJS Package": [[6, "openai-nodejs-package"]], "Billing": [[6, "billing"]], "Advanced features": [[6, "advanced-features"]], "Custom endpoints": [[6, "custom-endpoints"]], "LLM Fallbacks": [[6, "llm-fallbacks"]], "Routing": [[5, "routing"]], "What is LLM routing?": [[5, "what-is-llm-routing"]], "Foundation router": [[5, "foundation-router"]], "Filtering endpoints": [[5, "filtering-endpoints"]], "Maximising throughput": [[5, "maximising-throughput"]], "Fine-tuned custom router": [[5, "fine-tuned-custom-router"]], "Preparing a dataset": [[5, "preparing-a-dataset"]], "Training a router (beta)": [[5, "training-a-router-beta"]], "Benchmarking endpoints": [[9, "benchmarking-endpoints"]], "Quality benchmarks": [[9, "quality-benchmarks"], [9, "id4"]], "Runtime benchmarks": [[9, "runtime-benchmarks"], [9, "id2"]], "Running your own benchmarks (Beta)": [[9, "running-your-own-benchmarks-beta"]], "Connecting your stack": [[8, "connecting-your-stack"]], "Custom endpoints (Beta)": [[8, "custom-endpoints-beta"]], "Prerequisite": [[8, "prerequisite"]], "Adding the endpoints": [[8, "adding-the-endpoints"]], "Custom datasets": [[8, "custom-datasets"]], "Exceptions": [[13, "module-unify.exceptions"]], "Utils": [[14, "module-unify.utils"]], "Chat": [[11, "module-unify.chat"]], "Clients": [[12, "module-unify.clients"]]}, "indexentries": {"chatbot (class in unify.chat)": [[11, "unify.chat.ChatBot"]], "__init__() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.__init__"]], "clear_chat_history() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.clear_chat_history"]], "client (unify.chat.chatbot property)": [[11, "unify.chat.ChatBot.client"]], "endpoint (unify.chat.chatbot property)": [[11, "unify.chat.ChatBot.endpoint"]], "model (unify.chat.chatbot property)": [[11, "unify.chat.ChatBot.model"]], "module": [[11, "module-unify.chat"], [12, "module-unify.clients"], [13, "module-unify.exceptions"], [14, "module-unify.utils"]], "provider (unify.chat.chatbot property)": [[11, "unify.chat.ChatBot.provider"]], "run() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.run"]], "set_client() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.set_client"]], "set_endpoint() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.set_endpoint"]], "set_model() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.set_model"]], "set_provider() (unify.chat.chatbot method)": [[11, "unify.chat.ChatBot.set_provider"]], "unify.chat": [[11, "module-unify.chat"]], "asyncunify (class in unify.clients)": [[12, "unify.clients.AsyncUnify"]], "unify (class in unify.clients)": [[12, "unify.clients.Unify"]], "__init__() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.__init__"]], "__init__() (unify.clients.unify method)": [[12, "unify.clients.Unify.__init__"]], "endpoint (unify.clients.asyncunify property)": [[12, "unify.clients.AsyncUnify.endpoint"]], "endpoint (unify.clients.unify property)": [[12, "unify.clients.Unify.endpoint"]], "generate() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.generate"]], "generate() (unify.clients.unify method)": [[12, "unify.clients.Unify.generate"]], "get_credit_balance() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.get_credit_balance"]], "get_credit_balance() (unify.clients.unify method)": [[12, "unify.clients.Unify.get_credit_balance"]], "model (unify.clients.asyncunify property)": [[12, "unify.clients.AsyncUnify.model"]], "model (unify.clients.unify property)": [[12, "unify.clients.Unify.model"]], "provider (unify.clients.asyncunify property)": [[12, "unify.clients.AsyncUnify.provider"]], "provider (unify.clients.unify property)": [[12, "unify.clients.Unify.provider"]], "set_endpoint() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.set_endpoint"]], "set_endpoint() (unify.clients.unify method)": [[12, "unify.clients.Unify.set_endpoint"]], "set_model() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.set_model"]], "set_model() (unify.clients.unify method)": [[12, "unify.clients.Unify.set_model"]], "set_provider() (unify.clients.asyncunify method)": [[12, "unify.clients.AsyncUnify.set_provider"]], "set_provider() (unify.clients.unify method)": [[12, "unify.clients.Unify.set_provider"]], "unify.clients": [[12, "module-unify.clients"]], "authenticationerror": [[13, "unify.exceptions.AuthenticationError"]], "badrequesterror": [[13, "unify.exceptions.BadRequestError"]], "conflicterror": [[13, "unify.exceptions.ConflictError"]], "internalservererror": [[13, "unify.exceptions.InternalServerError"]], "notfounderror": [[13, "unify.exceptions.NotFoundError"]], "permissiondeniederror": [[13, "unify.exceptions.PermissionDeniedError"]], "ratelimiterror": [[13, "unify.exceptions.RateLimitError"]], "unifyerror": [[13, "unify.exceptions.UnifyError"]], "unprocessableentityerror": [[13, "unify.exceptions.UnprocessableEntityError"]], "unify.exceptions": [[13, "module-unify.exceptions"]], "delete_dataset() (in module unify.utils)": [[14, "unify.utils.delete_dataset"]], "delete_evaluation() (in module unify.utils)": [[14, "unify.utils.delete_evaluation"]], "download_dataset() (in module unify.utils)": [[14, "unify.utils.download_dataset"]], "evaluate() (in module unify.utils)": [[14, "unify.utils.evaluate"]], "list_datasets() (in module unify.utils)": [[14, "unify.utils.list_datasets"]], "list_endpoints() (in module unify.utils)": [[14, "unify.utils.list_endpoints"]], "list_evaluations() (in module unify.utils)": [[14, "unify.utils.list_evaluations"]], "list_models() (in module unify.utils)": [[14, "unify.utils.list_models"]], "list_providers() (in module unify.utils)": [[14, "unify.utils.list_providers"]], "unify.utils": [[14, "module-unify.utils"]], "upload_dataset_from_dictionary() (in module unify.utils)": [[14, "unify.utils.upload_dataset_from_dictionary"]], "upload_dataset_from_file() (in module unify.utils)": [[14, "unify.utils.upload_dataset_from_file"]]}}) \ No newline at end of file