From b9eda42ef006736bf9f71222b00c4b148f1eea44 Mon Sep 17 00:00:00 2001 From: Jason Liu Date: Wed, 20 Mar 2024 18:24:14 -0400 Subject: [PATCH] Delete index.html --- index.html | 142 ----------------------------------------------------- 1 file changed, 142 deletions(-) delete mode 100644 index.html diff --git a/index.html b/index.html deleted file mode 100644 index 5c195126a..000000000 --- a/index.html +++ /dev/null @@ -1,142 +0,0 @@ - Welcome To Instructor - Instructor
Skip to content

Instructor, Generating Structure from LLMs

Structured outputs powered by llms. Designed for simplicity, transparency, and control.


Twitter Follow Discord Downloads GPT

Instructor makes it easy to reliably get structured data like JSON from Large Language Models (LLMs) like GPT-3.5, GPT-4, GPT-4-Vision, including open source models like Mistral/Mixtral from Together, Anyscale, Ollama, and llama-cpp-python.

By leveraging various modes like Function Calling, Tool Calling and even constrained sampling modes like JSON mode, JSON Schema; Instructor stands out for its simplicity, transparency, and user-centric design. We leverage Pydantic to do the heavy lifting, and we've built a simple, easy-to-use API on top of it by helping you manage validation context, retries with Tenacity, and streaming Lists and Partial responses.

We also provide a library in Typescript, Elixir and PHP.


Getting Started

pip install -U instructor
-

If you ever get stuck, you can always run instructor docs to open the documentation in your browser. It even supports searching for specific topics.

instructor docs [QUERY]
-

You can also check out our cookbooks and concepts to learn more about how to use Instructor.

Usage

import instructor
-from openai import OpenAI
-from pydantic import BaseModel
-
-# This enables response_model keyword
-# from client.chat.completions.create
-client = instructor.patch(OpenAI())
-
-
-class UserDetail(BaseModel):
-    name: str
-    age: int
-
-
-user = client.chat.completions.create(
-    model="gpt-3.5-turbo",
-    response_model=UserDetail,
-    messages=[
-        {"role": "user", "content": "Extract Jason is 25 years old"},
-    ],
-)
-
-assert isinstance(user, UserDetail)
-assert user.name == "Jason"
-assert user.age == 25
-print(user.model_dump_json(indent=2))
-"""
-{
-  "name": "Jason",
-  "age": 25
-}
-"""
-

Using async clients

For async clients you must use apatch vs patch like so:

import asyncio
-import instructor
-from openai import AsyncOpenAI
-from pydantic import BaseModel
-
-aclient = instructor.apatch(AsyncOpenAI())
-
-
-class UserExtract(BaseModel):
-    name: str
-    age: int
-
-
-task = aclient.chat.completions.create(
-    model="gpt-3.5-turbo",
-    response_model=UserExtract,
-    messages=[
-        {"role": "user", "content": "Extract jason is 25 years old"},
-    ],
-)
-
-response = asyncio.run(task)
-print(response.model_dump_json(indent=2))
-"""
-{
-  "name": "Jason",
-  "age": 25
-}
-"""
-

Accessing the original response and usage tokens

If you want to access anything like usage or other metadata, the original response is available on the Model._raw_response attribute.

import openai
-import instructor
-from pydantic import BaseModel
-
-client = instructor.patch(openai.OpenAI())
-
-
-class UserDetail(BaseModel):
-    name: str
-    age: int
-
-
-user = client.chat.completions.create(
-    model="gpt-3.5-turbo",
-    response_model=UserDetail,
-    messages=[
-        {"role": "user", "content": "Extract Jason is 25 years old"},
-    ],
-)
-
-print(user._raw_response.model_dump_json(indent=2))
-"""
-{
-  "id": "chatcmpl-8zplvRbNM8iKSVa3Ld9NmVICeXZZ9",
-  "choices": [
-    {
-      "finish_reason": "stop",
-      "index": 0,
-      "logprobs": null,
-      "message": {
-        "content": null,
-        "role": "assistant",
-        "function_call": null,
-        "tool_calls": [
-          {
-            "id": "call_V5FRMSXrHFFTTqTjpwA76h7t",
-            "function": {
-              "arguments": "{\"name\":\"Jason\",\"age\":25}",
-              "name": "UserDetail"
-            },
-            "type": "function"
-          }
-        ]
-      }
-    }
-  ],
-  "created": 1709747711,
-  "model": "gpt-3.5-turbo-0125",
-  "object": "chat.completion",
-  "system_fingerprint": "fp_2b778c6b35",
-  "usage": {
-    "completion_tokens": 9,
-    "prompt_tokens": 81,
-    "total_tokens": 90
-  }
-}
-"""
-

Why use Instructor?

The question of using Instructor is fundamentally a question of why to use Pydantic.

  1. Powered by type hints — Instructor is powered by Pydantic, which is powered by type hints. Schema validation, prompting is controlled by type annotations; less to learn, less code to write, and integrates with your IDE.

  2. Powered by OpenAI — Instructor is powered by OpenAI's function calling API. This means you can use the same API for both prompting and extraction.

  3. Customizable — Pydantic is highly customizable. You can define your own validators, custom error messages, and more.

  4. Ecosystem Pydantic is the most widely used data validation library for Python. It's used by FastAPI, Typer, and many other popular libraries.

  5. Battle Tested — Pydantic is downloaded over 100M times per month, and supported by a large community of contributors.

  6. Easy Integration with CLI - We offer a variety of CLI tools like instructor jobs, instructor files and instructor usage to track your OpenAI usage, fine-tuning jobs and more, just check out our CLI Documentation to find out more.

More Examples

If you'd like to see more check out our cookbook.

Installing Instructor is a breeze. Just run pip install instructor.

Contributing

If you want to help out, checkout some of the issues marked as good-first-issue or help-wanted. Found here. They could be anything from code improvements, a guest blog post, or a new cook book.

License

This project is licensed under the terms of the MIT License.

\ No newline at end of file