使用 Groq AI 的结构化输出¶
本指南演示了如何将 Groq AI 与 Instructor 一起使用以生成结构化输出。你将学习如何使用 Groq 的 LLM 模型创建类型安全的响应。
你需要注册一个账户并获取 API 密钥。你可以在此处进行。
Groq AI¶
Groq 使用其新的 llama-3-groq-70b-8192-tool-use-preview
模型支持结构化输出。
同步示例¶
import os
from groq import Groq
import instructor
from pydantic import BaseModel
# Initialize with API key
client = Groq(api_key=os.getenv("GROQ_API_KEY"))
# Enable instructor patches for Groq client
client = instructor.from_groq(client)
class User(BaseModel):
name: str
age: int
# Create structured output
user = client.chat.completions.create(
model="llama3-groq-70b-8192-tool-use-preview",
messages=[
{"role": "user", "content": "Extract: Jason is 25 years old"},
],
response_model=User,
)
print(user)
# > User(name='Jason', age=25)
异步示例¶
import os
from groq import AsyncGroq
import instructor
from pydantic import BaseModel
import asyncio
# Initialize with API key
client = AsyncGroq(api_key=os.getenv("GROQ_API_KEY"))
# Enable instructor patches for Groq client
client = instructor.from_groq(client)
class User(BaseModel):
name: str
age: int
async def extract_user():
user = await client.chat.completions.create(
model="llama3-groq-70b-8192-tool-use-preview",
messages=[
{"role": "user", "content": "Extract: Jason is 25 years old"},
],
response_model=User,
)
return user
# Run async function
user = asyncio.run(extract_user())
print(user)
# > User(name='Jason', age=25)
嵌套对象¶
import os
from groq import Groq
import instructor
from pydantic import BaseModel
# Initialize with API key
client = Groq(api_key=os.getenv("GROQ_API_KEY"))
# Enable instructor patches for Groq client
client = instructor.from_groq(client)
class Address(BaseModel):
street: str
city: str
country: str
class User(BaseModel):
name: str
age: int
addresses: list[Address]
# Create structured output with nested objects
user = client.chat.completions.create(
model="llama3-groq-70b-8192-tool-use-preview",
messages=[
{
"role": "user",
"content": """
Extract: Jason is 25 years old.
He lives at 123 Main St, New York, USA
and has a summer house at 456 Beach Rd, Miami, USA
""",
},
],
response_model=User,
)
print(user)
#> {
#> 'name': 'Jason',
#> 'age': 25,
#> 'addresses': [
#> {
#> 'street': '123 Main St',
#> 'city': 'New York',
#> 'country': 'USA'
#> },
#> {
#> 'street': '456 Beach Rd',
#> 'city': 'Miami',
#> 'country': 'USA'
#> }
#> ]
#> }