Files
instructor/docs/hub/single_classification.md
2024-02-19 21:40:12 -05:00

54 lines
1.6 KiB
Markdown

# Single-Label Classification
IF you want to try this code with `instructor hub` you can pull it by running
```bash
instructor hub pull --slug single_classification --py > single_classification.py
```
This example demonstrates how to perform single-label classification using the OpenAI API. The example uses the `gpt-3.5-turbo` model to classify text as either `SPAM` or `NOT_SPAM`.
```python
from pydantic import BaseModel, Field
from typing import Literal
from openai import OpenAI
import instructor
# Apply the patch to the OpenAI client
# enables response_model keyword
client = instructor.patch(OpenAI())
class ClassificationResponse(BaseModel):
label: Literal["SPAM", "NOT_SPAM"] = Field(
...,
description="The predicted class label.",
)
def classify(data: str) -> ClassificationResponse:
"""Perform single-label classification on the input text."""
return client.chat.completions.create(
model="gpt-3.5-turbo",
response_model=ClassificationResponse,
messages=[
{
"role": "user",
"content": f"Classify the following text: {data}",
},
],
)
if __name__ == "__main__":
for text, label in [
("Hey Jason! You're awesome", "NOT_SPAM"),
("I am a nigerian prince and I need your help.", "SPAM"),
]:
prediction = classify(text)
assert prediction.label == label
print(f"Text: {text}, Predicted Label: {prediction.label}")
#> Text: Hey Jason! You're awesome, Predicted Label: NOT_SPAM
#> Text: I am a nigerian prince and I need your help., Predicted Label: SPAM
```