# Connect your agent

Source: https://convergingthought.com/docs/integrations

> Use the model in your existing stack, then add learning when it is useful.



Internalize serves GLM 5.3 through an OpenAI-compatible Chat Completions endpoint. Start by changing your server's base URL, API key, and model name. You do not need to create an adapter or register an agent before making a normal inference call.

| Setting     | Value                              |
| ----------- | ---------------------------------- |
| Base URL    | `https://convergingthought.com/v1` |
| Model       | `glm-5.3`                          |
| Default key | Inference                          |
| API family  | Chat Completions                   |

The current hosted workspace is a preview. These examples target the execution-enabled contract; preview projects reject paid model work. See [availability](/docs/getting-started/availability).

## Choose your stack [#choose-your-stack]

* [OpenAI SDKs](/docs/integrations/openai): Python and TypeScript clients, text, tool calls, and buffered SSE.
* [Vercel AI SDK](/docs/integrations/ai-sdk): the OpenAI-compatible provider and tools in an existing server application.
* [LangChain and LangGraph](/docs/integrations/langchain): use the same chat model in your chain or graph.
* [OpenAI Agents SDK](/docs/integrations/agents-sdk): explicitly select the Chat Completions model adapter.
* [Add learning](/docs/integrations/learning): bind `internalize` to an authorized subject in your runtime.

Frameworks that accept a custom OpenAI-compatible endpoint can use the same configuration if their requests fit the [supported fields](/docs/api-reference/chat-completions). This is not a claim that every framework feature is supported: Responses, embeddings, images, audio, and JSON-schema constrained decoding are not available.

## Add a subject when you need learned weights [#add-a-subject-when-you-need-learned-weights]

A call without a subject always uses the base model. To use a customer's learned knowledge, send `subject_id` in the request body or set the `X-Internalize-Subject` header. Both select the same project-scoped identity. If both are supplied they must match.

The server resolves the subject's active adapter when admitting the request. No learning passage is appended to context. Keep sending the current question, tool results, and conversation history required for the task; learned weights do not replace conversation state.

Do not allow the model or an untrusted browser to choose another customer's subject. Resolve that mapping in your application after authenticating the caller. A project key can access subjects within its project; subject IDs are not separate authorization credentials.

## Decide who may learn [#decide-who-may-learn]

The default **Inference** key cannot train or manually activate adapters. **Inference + learning** adds permission to submit learning and request activation of its resulting candidate. **Management only** is a separate, acknowledged choice for release automation; it cannot run inference or train.

Your runtime owns tool execution. Merely declaring an `internalize` tool does not call the learning API, and the model never needs an API key in its prompt. Validate arguments, bind the authorized subject, then execute the call on your server.

## Recover without duplicate work [#recover-without-duplicate-work]

All inference paths use the same durable jobs and billing. Save `X-Internalize-Job-Id` and use a stable `Idempotency-Key` for operations that might be retried. Disable framework retries initially. If a request is pending or requires reconciliation, inspect its existing job rather than create a replacement.

A disconnected stream does not cancel model execution. Streaming currently uses valid SSE frames buffered until a final response passes validation. It is useful for client compatibility, but does not offer token-by-token latency yet.
