Z.AI

Z.AI (지푸 AI)

Z.AI(지푸 AI)의 GLM 모델을 쓰려면 ZaiModel을 쓰면 돼요. 설치하고 API 키를 환경 변수로 설정한 뒤 이름으로 바로 에이전트를 만들 수 있어요. 특이한 점은 thinking/추론 모드를 지원한다는 것과, 이전 턴의 reasoning 콘텐츠가 기본적으로 보존된다는 거예요.

출처: 공식문서

설치

ZaiModel을 쓰려면 pydantic-ai를 설치하거나 pydantic-ai-slimzai 옵션 그룹과 함께 설치해야 해요.

Terminal

pip install "pydantic-ai-slim[zai]"

Terminal

uv add "pydantic-ai-slim[zai]"

설정

Z.AI(Zhipu AI) API를 쓰려면 z.ai에 가서 API 키를 생성해요.

사용 가능한 모델 목록은 Z.AI 문서를 보세요.

환경 변수

API 키를 받았으면 환경 변수로 설정해요.

Terminal

export ZAI_API_KEY='your-api-key'

이제 ZaiModel을 이름으로 쓸 수 있어요.

from pydantic_ai import Agent

agent = Agent('zai:glm-5')
...

또는 모델 이름만으로 직접 초기화할 수도 있어요.

from pydantic_ai import Agent
from pydantic_ai.models.zai import ZaiModel

model = ZaiModel('glm-5')
agent = Agent(model)
...

Thinking 모드

Z.AI의 glm-5.3, glm-5.2, glm-5.1, glm-5, glm-4.7, glm-4.6(hybrid thinking), glm-4.5(interleaved thinking) 모델은 thinking/추론 모드를 지원해요. 최종 응답 전에 reasoning 콘텐츠를 생성하죠. glm-4.6vglm-4.5v 비전 모델도 포함해요. 통합된 thinking 설정으로 구성해요.

from pydantic_ai import Agent
from pydantic_ai.settings import ModelSettings

agent = Agent(
    'zai:glm-5',
    model_settings=ModelSettings(thinking=True),
)
...

thinking=True는 thinking을 켜고 thinking=False는 끄는데, 항상 추론하고 thinking=False를 무시하는 GLM-5.3은 예외예요. GLM-5.2·GLM-5.3에서는 명시적 노력 수준('minimal'/'low'/'medium'/'high'/'xhigh')이 reasoning_effort로 Z.AI에 전달돼요. GLM-5.3은 low/high/max만 받으므로 나머지 수준은 가장 가까운 것으로 매핑돼요(minimallow, mediumhigh, xhighmax). 노력 세분화를 노출하지 않는 다른 GLM 모델에서는 노력 수준이 모두 enabled로 합쳐져요. 필드를 생략하면 각 모델의 기본 동작을 써요.

보존된 thinking

thinking 가능 모델에서 이전 어시스턴트 응답의 reasoning 콘텐츠는 기본적으로 보존돼요. 구성이 필요 없죠. 더 나은 멀티턴 일관성과 다른 provider와의 일관성을 위한 거예요. 이전 턴의 완전하고 수정되지 않은 reasoning_content가 PydanticAI에 의해 자동으로 API로 다시 보내져요.

각 턴을 새로 시작하고 싶다면 Z.AI 전용 ZaiModelSettingszai_clear_thinking=True를 써서 끄면 돼요.

from pydantic_ai import Agent
from pydantic_ai.models.zai import ZaiModelSettings

agent = Agent(
    'zai:glm-5',
    # Opt out of the default preserved thinking:
    model_settings=ZaiModelSettings(thinking=True, zai_clear_thinking=True),
)
...

자세한 내용은 Z.AI thinking mode 문서를 보세요.

provider 인자

provider 인자로 커스텀 Provider를 제공할 수 있어요. 가장 간단한 경우 API 키만 있는 ZaiProvider를 넘기면 돼요. 기본 httpx2.AsyncClient도 커스터마이즈하고 싶다면 provider를 만들 때 넘기세요.

from httpx2 import AsyncClient

from pydantic_ai import Agent
from pydantic_ai.models.zai import ZaiModel
from pydantic_ai.providers.zai import ZaiProvider

custom_http_client = AsyncClient(timeout=30)
model = ZaiModel(
    'glm-5',
    provider=ZaiProvider(api_key='your-api-key', http_client=custom_http_client),
)
agent = Agent(model)
...

커스텀 HTTP 클라이언트가 필요 없다면 http_client=custom_http_client 인자는 빼면 돼요.

더 알아보기 (Learn more)