Azure OpenAI Service: The Complete Guide

Azure OpenAI Service: The Complete Guide

A friendly, in-depth tour of Microsoft's service for running powerful AI language, image, and speech models inside your own Azure environment. Learn how it works, how to build with it safely, how to scale it, and how to keep the bill under control.

Imagine hiring an extremely well-read assistant who has studied a huge part of the world’s writing. You can ask this assistant to summarize a long report, answer customer questions, draft an email, sort messy notes into tidy tables, or explain a hard idea in simple words. The assistant is fast, never tired, and can handle thousands of requests at once. But there is a catch: you want this assistant to work inside your own secure office, follow your company’s rules, keep your private papers private, and show you a clear bill at the end of the month.

Azure OpenAI Service is how many organizations get exactly that arrangement. It offers advanced AI models from OpenAI, running on Microsoft’s Azure cloud, with Azure’s security, networking, and management tools wrapped around them. In this guide you will learn what the service is, what its parts are, how a request travels through it, what happens inside a language model in simple terms, how to connect it to your own data, how to keep it safe, how to scale it, and how to manage cost. Every new term is explained when it first appears, and every big idea comes with an everyday comparison.

Tokens
The unit of text you pay for and measure
Private
Your prompts and data stay under your control
Many models
Text, reasoning, images, speech and embeddings

1What Is Azure OpenAI Service?

OpenAI’s models, delivered through Azure, with enterprise-grade security and management added.

Starting with the idea of a language model

A language model is a computer program trained on enormous amounts of text so that it can predict what words are likely to come next in a sentence. That simple skill, repeated one small piece at a time, lets it write paragraphs, answer questions, translate, summarize, and even write computer code. Newer models can also look at images, listen to speech, and use tools. The program is a large language model, usually shortened to LLM, because it is built from a very large number of internal settings learned during training.

What Azure adds

OpenAI is the company that created the GPT family of models. Azure OpenAI Service is a Microsoft service that hosts these models in Azure data centers. You create a resource in your Azure subscription, choose a model, and call it from your applications. Because it lives inside Azure, you get the things companies need before they trust a new technology: sign-in through your company identity system, private network connections, encryption, access control, activity logs, compliance certifications, and a support contract.

Microsoft has also stated that the prompts and answers handled by the service are not used to train the underlying models and are not shared with other customers. Always read the current data privacy documentation for the exact terms that apply to you, since details such as short-term retention for abuse monitoring can vary by setup.

Everyday analogy

Using a public AI chat website is like asking a brilliant stranger for help in a busy cafe. Using Azure OpenAI is like having that same expertise delivered into a private meeting room in your own building, with a guard at the door, a visitor log, and a contract that says what happens to your notes.

What can it do?

Text

Chat and writing

Answer questions, draft and rewrite text, summarize long documents, extract facts, and classify messages.

Reasoning

Harder problems

Specialized models that spend extra effort thinking through multi-step problems in math, logic, planning, and code.

Meaning

Embeddings

Turn text into lists of numbers that capture meaning, so you can search by idea instead of by exact words.

Media

Images and speech

Create or edit images, turn speech into text, turn text into speech, and hold live voice conversations.

What problem does it solve?

Teams want the power of modern AI but cannot send sensitive information to an unknown place, cannot run the huge models on their own hardware, and cannot ignore rules about data location and access. Azure OpenAI removes these blockers. You get hosted models, predictable access control, regional placement, and tools to watch usage, all within the same cloud your other systems already use.

i
Remember

A language model produces text that sounds right, not text that is guaranteed to be right. Building well with it means adding checks, grounding in real data, and human review where mistakes would be costly.

A note about names

Microsoft’s AI products are renamed and regrouped fairly often. Azure OpenAI capabilities are increasingly presented as part of a wider Microsoft AI platform for building and managing AI applications and agents, which also offers models from other providers. The ideas in this guide stay the same even when product names shift, but always check the current names in Microsoft’s documentation and portal.

2Azure OpenAI and Its Neighbors

Several services sound alike. Knowing which does what keeps your design clean.

flowchart TD
    APP["Your application"] --> GW["API gateway for control and logging"]
    GW --> AOAI["Azure OpenAI Service: the models"]
    APP --> SRCH["Azure AI Search: finds your documents"]
    SRCH --> DATA["Your data in storage and databases"]
    AOAI --> SAFE["Content safety filters"]
    APP --> ID["Microsoft Entra ID: who is calling"]
    APP --> MON["Azure Monitor: logs and metrics"]
    
FIG 2.1 — Azure OpenAI in a typical solution, surrounded by supporting services
ServiceMain roleThink of it as
Azure OpenAI ServiceHosts OpenAI models behind an Azure endpointThe expert assistant
OpenAI’s own APISame model family, run by OpenAI directlyThe assistant’s home office
Azure AI SearchFinds relevant pieces of your documents by words and meaningThe librarian
Microsoft AI platform for agents and appsBuilds, evaluates, and manages AI applications and agentsThe workshop
Azure Machine LearningTrains and deploys your own modelsThe research lab
Azure AI services for vision, speech, languageReady-made specialized AI tasksSpecialist helpers
Copilot productsFinished AI assistants inside Microsoft appsThe ready-made product

Azure OpenAI versus using OpenAI directly

The models are closely related, but the packaging differs. With Azure OpenAI you sign in with your company identity, place the service in a chosen Azure region, connect it over a private network, and manage it with the same tools as your other Azure resources, all under Microsoft’s contracts. With the direct service you follow OpenAI’s own account, billing, and terms. Many enterprises prefer the Azure route because it fits their existing governance. New models sometimes reach one platform before the other, so check availability for the model you need.

Azure OpenAI versus Azure AI Search

These two are partners, not rivals. The model knows general language and facts from its training, but it does not know your company’s private documents. Azure AI Search stores and retrieves your documents. Combining them, so that the model answers using the retrieved passages, is a pattern you will meet in Chapter 10.

Everyday analogy

The model is a very clever writer who has read the whole public library but has never seen your company’s filing cabinet. The search service is the clerk who fetches the right folders from that cabinet so the writer can use them while answering.

i
Prebuilt or custom?

If a finished product already does the job, such as an AI assistant inside an office app, use it. Build with the service when you need your own workflow, your own data, or an AI feature inside your own product.

3Core Concepts You Must Know

A handful of words appear in every conversation about Azure OpenAI. Learn them once and the rest becomes easy.

Resource and endpoint

A resource is the Azure object you create to use the service. It lives in one region and one subscription, and it has its own web address called an endpoint. Your applications send requests to that endpoint.

Model and deployment

A model is a specific AI brain, for example one for chat or one for embeddings. A deployment is a named, ready-to-use copy of a model inside your resource. You pick the model, a version, a capacity, and a name. Your code then calls the deployment by that name, not by the raw model name. This indirection is useful, because you can swap a newer model behind the same name without rewriting your application.

Prompt and completion

A prompt is everything you send to the model: instructions, the question, examples, and any documents. A completion is what the model writes back. Together they make a single request and response.

Tokens

Models do not read letters or whole words. They read tokens, which are small pieces of text, often a short word or part of a longer one. In English, one token is roughly three quarters of a word, so a hundred tokens is about seventy-five words. Tokens matter because everything is measured in them: how much you can send, how much comes back, how fast you are throttled, and how much you pay.

Context window

The context window is the maximum number of tokens the model can look at in one request, counting both your prompt and its answer. It is the model’s working memory. Anything outside it is simply unseen. Larger windows allow longer documents, but they cost more and can be slower.

Embeddings

An embedding is a long list of numbers that represents the meaning of a piece of text. Texts with similar meaning get similar numbers. This lets you search by meaning: a question about “refund rules” can find a paragraph titled “returning your purchase”, although they share few words.

Temperature and other dials

Temperature controls how adventurous the model is. A low value makes answers more predictable and focused, which suits extraction and factual tasks. A higher value makes them more varied and creative. A related dial, called top-p, limits the choice to the most likely words. A setting for maximum output length caps how long the reply may be.

Quota and rate limits

A quota is the amount of capacity you are allowed, usually measured in tokens per minute and requests per minute. A rate limit is what happens when you go past it: the service answers with a “too many requests” error and tells you how long to wait.

flowchart TD
    SUB["Azure subscription"] --> RES["Azure OpenAI resource in one region"]
    RES --> EP["Endpoint address"]
    RES --> D1["Deployment: chat-model-main"]
    RES --> D2["Deployment: embedding-model"]
    RES --> D3["Deployment: image-model"]
    D1 --> M1["Chat model version"]
    D2 --> M2["Embedding model version"]
    D3 --> M3["Image model version"]
    SUB --> Q["Quota per region and model"]
    
FIG 3.1 — A resource holds named deployments, each pointing to a model
Everyday analogy

The resource is a restaurant. Each deployment is a chef station with a name on the door. Tokens are the portions of ingredients used. The context window is the size of the countertop. Quota is how many orders the kitchen is allowed to cook per minute.

!
Common confusion

Your code calls the deployment name you chose, not the public model name. If a request fails with “deployment not found”, the name or the resource endpoint is usually the culprit.

4Models and Capabilities

The catalog changes quickly, but the families stay recognizable. Choose by task, not by hype.

Family

General chat models

All-round models for conversation, writing, summarizing, extraction, and tool use. Larger ones are smarter and costlier. Smaller ones are faster and cheaper.

Family

Reasoning models

Models that think step by step before answering. Best for hard planning, math, and complex code, but slower and more expensive per answer.

Family

Embedding models

Convert text into meaning-numbers for search, grouping, recommendations, and retrieval.

Family

Image, audio and realtime models

Generate or edit pictures, transcribe speech, speak text aloud, and hold low-delay voice conversations.

How to choose a model

Match the model to the job. A short customer message needing a category label does not require the most powerful model. A cheaper, faster one usually does the job. A long legal comparison or a difficult scheduling puzzle may justify a stronger or reasoning model. A sensible method is to start with a small model, test it on real examples, and move up only if quality is not enough.

TaskUsually a good fitWhy
Sort emails into categoriesSmall, fast chat modelSimple pattern, huge volume, low cost matters
Answer questions from company documentsMid-size chat model plus searchGrounded by retrieved text, so extra brainpower is less needed
Draft long, nuanced reportsLarger chat modelBetter writing and consistency
Plan multi-step tasks or solve tough logicReasoning modelThinks before answering
Search by meaningEmbedding modelBuilt for vectors, not for chat
Transcribe a callSpeech-to-text modelSpecialized for audio

Capabilities to look for

  • Context window size: how much text fits in one request.
  • Tool calling: whether the model can ask your code to run a function, such as looking up an order.
  • Structured output: whether the model can be made to reply in a strict format that your program can read reliably.
  • Vision: whether it can understand pictures and documents with layouts.
  • Languages: how well it handles the languages your users speak.
  • Speed and cost: time to first word and price per token.

Regions and availability

Not every model is available in every Azure region, and new models often appear in a few regions first. Region matters for three reasons: where your data is processed, how close the service is to your users, and how much quota you can get. Check the current model availability table before you plan.

!
Models retire

Each model version has a lifecycle and a retirement date. A model you rely on today will eventually be replaced. Plan to test and move to newer versions regularly, and avoid designs that break when a model’s style changes slightly.

5Deployment Types, Quotas and Throughput

How you buy capacity decides your price, your speed consistency, and your data location.

Pay as you go

The standard style is simple: you pay per token used, with no commitment. It shares capacity with other customers, so speed can vary when the platform is busy. It is the right starting point for most projects.

Where the processing happens

Standard deployments come in flavors that differ in where your requests may be processed. A regional flavor keeps processing in the region you chose. A broader flavor lets Microsoft route requests anywhere in a wider geography for better availability and often better price, which is helpful when strict data location rules do not apply. A middle option confines processing to a larger area such as a data zone. The names and exact rules change, so read the current description before you choose, especially if you have legal data residency requirements.

Reserved throughput

With provisioned throughput you reserve a fixed amount of processing capacity, measured in units. You pay for the reservation whether or not you use it, and in return you get steady, predictable speed and lower delay variation. This suits large, steady, business-critical workloads. It is like renting a dedicated lane on a highway instead of using the shared road.

Batch

A batch deployment is for work that can wait. You submit a large file of requests, and the results come back within a stated window, often a day. Because it uses spare capacity, it is cheaper. Good for overnight summarizing of thousands of documents or labeling a big dataset.

Flexible

Standard

Per-token billing, shared capacity, quick to start. Speed can vary.

Predictable

Provisioned

Reserved units with consistent speed. Good for steady heavy use, costly if underused.

Cheaper, slower

Batch

Submit now, receive later at a discount. Not for live users.

Rule of thumb

Start standard

Measure real usage, then consider provisioned for the steady core and standard for the spikes.

Quota in detail

Quota is allocated per subscription, per region, and per model type. It is measured in tokens per minute and requests per minute. When you create a deployment, you assign part of your quota to it. If you give a deployment too little, users meet errors during busy periods. If you hoard quota in idle deployments, other deployments may have none left. Quota can often be raised by request, but extra capacity is not guaranteed.

Everyday analogy

Standard is a taxi: pay for each ride, but at a busy hour you may wait. Provisioned is a company car you lease: it is always there, but you pay even when it sits parked. Batch is a freight shipment: cheap, and it arrives tomorrow.

i
Count tokens in both directions

Rate limits and costs depend on prompt tokens plus the output tokens the model may produce. A very large maximum output setting can reserve more capacity than you need, so set it to a sensible ceiling.

6Architecture and Components

What sits between your code and the model, seen from a distance.

You never see the machines inside the service, but a rough picture explains many behaviors. A request first meets the front door of your resource, where identity and quota are checked. It then passes through safety filters, is routed to a pool of specialized machines that host the model, and the answer travels back through the filters again.

flowchart TD
    CL["Client application"] --> EP["Resource endpoint"]
    EP --> AUTH["Identity and access check"]
    AUTH --> QT["Quota and rate limit check"]
    QT --> IF["Input safety filters"]
    IF --> RT["Router to model hosts"]
    RT --> GPU["Model running on accelerator hardware"]
    GPU --> OF["Output safety filters"]
    OF --> CL
    EP -.-> LOG["Metrics and optional logs"]
    
FIG 6.1 — The path through the service, front door to model and back
1

Front door

Receives the request over an encrypted connection, either from the public internet or from a private network link.

2

Identity and quota

Confirms the caller has permission and that the deployment still has capacity left this minute.

3

Safety filters

Classification models scan the prompt, and later the answer, for harmful content categories and for attempts to trick the model.

4

Model hosts

Specialized accelerator hardware runs the model. Large models are split across several chips working together.

5

Telemetry

Counts of requests, tokens, errors, and delays flow to Azure Monitor. Detailed request logging is something you choose to turn on.

The control plane and the data plane

Like most Azure services, there are two sides. The control plane handles creating resources, deployments, and settings. The data plane handles the actual model calls. Different permissions govern each side, so a person can be allowed to call the model without being allowed to change its deployments, and the reverse.

Everyday analogy

Think of an airport. The control tower and airline office (control plane) decide which planes exist and where they park. The runway and passengers (data plane) are where the actual flying happens. Different badges open different doors.

Abuse monitoring

To prevent misuse, the service includes systems that look for patterns of harmful use. By default, some prompt and answer data may be kept for a short period and reviewed in limited circumstances by authorized personnel when potential abuse is flagged. Customers with strict needs can apply to modify these practices. Read the current terms to understand exactly what applies to your account.

i
Stateless by design

The model itself remembers nothing between requests. A chat that seems to remember earlier turns works because your application sends the earlier messages again each time. If you do not send them, the model has no idea they existed.

7Internal Working: How a Language Model Thinks

You do not need advanced mathematics to understand the main ideas. A few pictures are enough.

Step one: breaking text into tokens

Your prompt is first split into tokens by a tokenizer, a fixed dictionary of text pieces. Each token is replaced by a number. Common words are usually one token, rare words are several. Different languages use different numbers of tokens for the same meaning, which is why a text in one language may cost more than its translation.

Step two: turning tokens into meaning

Each token number is converted into an embedding, a long list of numbers describing it. At first, these lists describe only the token on its own. As the data flows through the model’s many layers, each list is adjusted to reflect its surroundings, so that the word “bank” ends up meaning different things next to “river” than next to “loan”.

Step three: attention

The key invention behind modern models is called attention. At every layer, each token looks at all the other tokens in the context and decides which ones matter most for understanding it. In the sentence “The trophy did not fit in the suitcase because it was too big”, attention helps connect “it” to “trophy” rather than “suitcase”. This is a type of design called a transformer.

Everyday analogy

Imagine reading a mystery novel with a highlighter. Each time you meet a pronoun, you look back and highlight the earlier clues that explain it. Attention is the model doing that highlighting for every word at the same time, many times over.

Step four: predicting the next token

After the layers, the model produces a score for every token in its dictionary, saying how likely it is to come next. A sampling step then picks one, influenced by the temperature setting. That token is added to the text, and the whole process repeats to pick the next one, and so on, until the answer ends or a limit is reached. This is why long answers take longer: they are produced one token at a time.

flowchart LR
    T["Your prompt text"] --> TK["Split into tokens"]
    TK --> EM["Convert to number lists"]
    EM --> L["Many attention layers"]
    L --> SC["Score every possible next token"]
    SC --> SM["Pick one using temperature"]
    SM --> OUT["Add to answer"]
    OUT -->|"repeat until finished"| L
    
FIG 7.1 — The loop that writes an answer one token at a time

Why models sometimes make things up

The model’s job is to produce plausible continuations, not to look up verified facts. When it lacks information, it may still produce a fluent, confident sentence. This is called a hallucination. It is not lying on purpose. It is a side effect of how the system works. Grounding the model in real documents, asking it to cite sources, and checking important outputs are the main defenses.

Training in one paragraph

Models first learn from enormous collections of text by repeatedly guessing missing words and adjusting their internal numbers to guess better. Later, they are refined with examples of good conversations and with human feedback, so they follow instructions politely and safely. All of this happens before you use the model. When you call it, the learning is frozen. Your requests do not change the model.

Speed tricks you benefit from

  • Prompt caching: when many requests begin with the same long beginning, the service can reuse earlier work for that shared part, saving time and sometimes cost. This is why placing stable instructions first and changing details last is a good habit.
  • Streaming: the answer can be sent piece by piece as it is produced, so users start reading right away.
  • Batching inside the hardware: the platform processes many users’ requests together for efficiency.
i
Interview-ready

If asked how an LLM generates text, say: it splits the prompt into tokens, converts them to vectors, uses attention layers to combine context, predicts a probability for each possible next token, samples one, appends it, and repeats until done.

8Data Flow: The Life of a Request

Follow one question from a user’s screen to the model and back, and see where time and tokens are spent.

sequenceDiagram
    participant U as User
    participant A as Your application
    participant G as Gateway
    participant S as Azure OpenAI endpoint
    participant M as Model
    U->>A: Ask a question
    A->>A: Build prompt with instructions and history
    A->>G: Send request with identity token
    G->>S: Forward after limits and logging
    S->>S: Check access, quota and input filters
    S->>M: Run the model
    M-->>S: Tokens produced one by one
    S->>S: Check output filters
    S-->>A: Stream answer pieces
    A-->>U: Show answer as it arrives
    
FIG 8.1 — A streamed chat request from user to answer
1

Build the prompt

Your application combines fixed instructions, the user’s question, earlier messages, and any retrieved documents into one request. This is where most of your tokens come from.

2

Authenticate

The call carries proof of who is asking, preferably a short-lived identity token and not a stored secret key.

3

Check and filter

The service verifies quota and permissions and scans the input for harmful content or attack attempts.

4

Read the prompt

The model processes all prompt tokens first. This stage takes longer when the prompt is long, and it decides how soon the first word appears.

5

Write the answer

Tokens are generated one by one. Each adds a small amount of time, so longer answers take longer.

6

Filter and return

The answer is checked, and then delivered, usually streamed so the user reads while it is still being written.

7

Account

Token counts are recorded for billing, quota, and your own monitoring.

Where time goes

Two delays matter. The time to first token is how long the user waits before anything appears, driven by prompt length, queueing, and model size. The generation speed is how fast the remaining words arrive. A snappy feel usually comes from streaming and short prompts rather than from raw speed alone.

Streaming versus waiting

In a non-streaming call, your application waits until the whole answer is ready. In a streaming call, the answer is delivered in small chunks as they are produced. For human users, streaming almost always feels faster. For background jobs, waiting for the whole answer is simpler to program.

Everyday analogy

Waiting for the whole answer is like waiting for a full meal to be cooked before anything reaches your table. Streaming is like receiving each dish as soon as it is ready. The meal takes the same time, but you are less bored.

!
Gotcha: cutting the answer short

If the maximum output limit is too small, the answer is simply cut off mid-sentence. If the total of prompt plus answer would exceed the context window, the request fails. Always check how the answer ended, and handle both cases in your application.

9Prompting and API Features

The way you ask shapes the quality of what you get. Good prompting is a craft, and a cheap one.

Roles in a conversation

A request to a chat model is a list of messages, each with a role. The system message sets the rules and personality, such as “You are a polite support assistant for a bank. Never give legal advice.” The user messages carry the questions. The assistant messages hold earlier answers. Instructions in the system message are treated as the most authoritative.

Techniques that work

Clarity

Be specific

State the task, the audience, the format, and the length. Vague requests get vague answers.

Examples

Show, do not just tell

Include two or three sample inputs with ideal outputs. Models copy patterns very well.

Steps

Break big tasks apart

Ask for one step at a time, or tell the model the order to follow, instead of one giant demand.

Limits

Say what to avoid

Name forbidden topics, tone, and what to do when the answer is not known, such as “say you do not know”.

Tool calling

Models cannot check the weather or look up an order by themselves. With tool calling, you describe a set of functions that your program offers, such as “get order status” with its inputs. When the user asks something that needs one, the model replies not with prose but with a request: “please run this function with these values”. Your program runs it and sends back the result, and the model then writes a final answer using it. The model never runs code itself. Your application stays in charge, which is also where you add permission checks.

sequenceDiagram
    participant U as User
    participant A as Application
    participant M as Model
    participant T as Order system
    U->>A: Where is my order
    A->>M: Question plus list of available tools
    M-->>A: Request to call the order lookup tool
    A->>T: Look up the order for this user
    T-->>A: Status is shipped
    A->>M: Send tool result
    M-->>A: Friendly final answer
    A-->>U: Your order has shipped
    
FIG 9.1 — Tool calling: the model asks, your application acts

Structured outputs

When another program, not a person, reads the answer, you need predictable structure. The service can be told to reply in a strict shape that you describe, so every answer has the same named fields. This avoids fragile text parsing and cuts down on errors. Always still validate the values, because a correctly shaped answer can still contain a wrong fact.

Other useful controls

  • Temperature: low for extraction and classification, higher for brainstorming.
  • Maximum output length: protects cost and keeps answers focused.
  • Stop sequences: make the model stop at a chosen marker.
  • Seed option: improves repeatability for testing, though it never guarantees identical answers.
  • Multiple answers: request several variants in one call to compare.

Writing a good system message

Treat it like a short job description. Say who the assistant is, what it may do, what it must not do, how it should format answers, and what to do when unsure. Keep it clear and free of contradictions, and store it in version control, because a one-word change can alter behavior across your whole product.

Everyday analogy

A system message is the briefing you give a new employee on day one. Examples are like showing them three finished reports. Tool calling is giving them access to specific company systems, one request at a time, with you watching the door.

i
Test prompts like code

Collect a set of real example questions with the answers you expect. Run it each time you change a prompt or model. This catches regressions long before customers do.

10Grounding on Your Own Data: Retrieval-Augmented Generation

How to make the model answer from your documents instead of from its imagination.

The model does not know your internal policies, product manuals, or customer records. Pasting every document into every prompt is impossible, as the context window is limited and every token costs money. The solution is called retrieval-augmented generation, or RAG. First retrieve the few most relevant passages, then augment the prompt with them, and let the model generate an answer based on that evidence.

flowchart TD
    Q["User question"] --> EMB1["Turn question into an embedding"]
    EMB1 --> VS["Search index of document passages"]
    VS --> TOP["Top matching passages"]
    TOP --> PR["Build prompt: instructions, passages, question"]
    PR --> LLM["Chat model writes grounded answer"]
    LLM --> ANS["Answer with citations"]
    DOCS["Your documents"] --> CH["Split into passages"]
    CH --> EMB2["Turn passages into embeddings"]
    EMB2 --> VS
    
FIG 10.1 — Indexing on the bottom path, answering on the top path

Preparing the library

1

Collect and clean

Gather documents, remove duplicates and outdated versions, and fix broken text from scanned files.

2

Chunk

Split documents into passages of a few hundred words, often with slight overlap, so each piece carries one idea and enough context.

3

Embed

Use an embedding model to turn each passage into meaning-numbers.

4

Index with details

Store passages, their numbers, and extra fields such as title, date, and who may read them in a search service.

5

Keep it fresh

Update the index when documents change, and remove what was withdrawn.

Answering a question

The question is turned into an embedding and compared with the passages. The closest ones are returned. Many teams use hybrid search, which combines meaning-based matching with ordinary keyword matching, because keywords catch exact product codes and names that meaning-based search may miss. A re-ranking step can then sort the candidates so the best ones come first. The chosen passages are added to the prompt along with an instruction such as “answer only from the passages below, and say so if the answer is not there”.

Everyday analogy

An open-book exam. The student (the model) is clever but has not memorized your textbook. The librarian (search) brings the three most relevant pages, and the student writes the answer from those pages, pointing at where each fact came from.

Built-in helpers

Azure offers ways to connect a model to a search index with little code, so that retrieval, prompt building, and citations are handled for you. These are quick for prototypes and common cases. For detailed control over chunking, filtering, ranking, and prompts, many teams build the steps themselves in their own application code.

Respect access rights

If two employees ask the same question, but only one may read the salary document, the search must not hand that document to the other. Store access information with each passage, and filter results by the identity of the person asking. Otherwise your assistant becomes a clever way to leak documents.

Why RAG is popular

  • Answers use current, company-specific information
  • Sources can be shown, building trust
  • Updating a document is easier than retraining a model
  • Smaller, cheaper models often suffice

Where it goes wrong

  • Poor chunking splits an answer across pieces
  • Out-of-date or contradictory documents mislead the model
  • Retrieval misses the right passage, so the model improvises
  • Missing access filters expose private documents

11Customization: Prompting, RAG, Fine-Tuning and Agents

Several ways to make the model fit your needs. Start with the cheapest, and move on only when it is not enough.

flowchart TD
    N["Model not good enough for my task"] --> A{"Is the problem unclear instructions"}
    A -->|"yes"| P["Improve prompt and examples"]
    A -->|"no"| B{"Does it lack my private or current facts"}
    B -->|"yes"| R["Add retrieval from your data"]
    B -->|"no"| C{"Does it need a special style or format at scale"}
    C -->|"yes"| F["Consider fine-tuning"]
    C -->|"no"| D{"Does it need to take actions in systems"}
    D -->|"yes"| AG["Add tools and agent logic"]
    D -->|"no"| M["Try a stronger model"]
    
FIG 11.1 — A simple path for choosing how to improve results

Prompt engineering

Cheap, instant, and reversible. Improve instructions, add examples, specify the format, and break tasks apart. A surprising number of problems end here.

Retrieval

Best when the missing ingredient is knowledge: your policies, products, tickets, or fast-changing facts. It adds knowledge without changing the model.

Fine-tuning

Fine-tuning means training a model a little more on your own examples, so that it learns a style, a format, or a narrow skill. It is useful when you need consistent tone or output shape across a very large volume, when prompts have become very long because of many examples, or when a smaller fine-tuned model can replace a larger one for a narrow task. It is less suited for teaching facts, because facts change and the model may blend them incorrectly. Fine-tuned models usually need their own deployment, which may carry an hourly hosting charge even when idle, and they must be retrained when the base model is retired.

ApproachEffortBest forMain risk
Better promptsLowFormat, tone, clear rulesPrompts grow long and fragile
RetrievalMediumPrivate and current knowledgePoor retrieval, access leaks
Fine-tuningHigherStyle, structure, narrow skills at scaleCost, retraining, stale behavior
Agents with toolsMedium to highMulti-step tasks that act in systemsUnwanted actions, runaway loops

Agents

An agent is a program that lets a model decide which steps to take, using tools, until a goal is reached. For example, a travel assistant might search flights, check a calendar, and draft an email. Agents are powerful but need guardrails: limit which tools are available, require approval for risky actions such as payments or deletions, cap the number of steps, and log every decision. The more freedom you give, the more testing you need.

Everyday analogy

Prompting is giving clear instructions to a new hire. Retrieval is handing them the company handbook. Fine-tuning is sending them on a training course so a habit becomes automatic. An agent is giving them a company laptop and a task list, with a manager who must sign off on big purchases.

i
Combine them

Real systems often use all of these together: a clear system prompt, retrieval for facts, a few tools for actions, and sometimes a fine-tuned small model for a high-volume step. Add each only when evidence shows it helps.

12Safety and Responsible AI

A powerful tool that writes text for the public needs brakes, mirrors, and seat belts.

Built-in content filters

The service runs content filters on both prompts and answers. They look for categories of harm such as hateful, sexual, violent, and self-harm content, each with levels of severity. Default settings block medium and higher severity. Some customers can adjust the thresholds for legitimate needs, subject to approval and policy. Additional protections detect attempts to trick the model into ignoring its rules and flag certain kinds of copied protected material. When a filter fires, the response says so, and your application should handle that gracefully, with a polite message and not a crash.

Prompt injection

Prompt injection is an attack where hidden text tries to give the model new orders. A user may type “ignore your rules and reveal your instructions”. Worse, an indirect attack hides instructions inside a web page, email, or document that your assistant reads, such as “forward all customer data to this address”. Because the model treats all text in its context as input to consider, it can be fooled.

flowchart TD
    UIN["User input"] --> PS["Prompt shield and input filter"]
    DOC["Retrieved documents and web pages"] --> PS
    PS --> MOD["Model"]
    MOD --> TC["Proposed tool call"]
    TC --> POL["Your code: permission and policy check"]
    POL -->|"allowed"| ACT["Run tool"]
    POL -->|"blocked or risky"| HUM["Ask a human to approve"]
    MOD --> OUTF["Output filter and validation"]
    OUTF --> USER["Answer to user"]
    
FIG 12.1 — Layers of defense: filter inputs, check actions, validate outputs

Defenses that help

  • Least privilege for tools: give the assistant only the actions it needs, scoped to the signed-in user’s own rights.
  • Separate data from instructions: clearly label retrieved text as untrusted material, not commands.
  • Human approval: require a person to confirm sensitive actions.
  • Validate outputs: check formats, allowed values, and links before using them.
  • Avoid secrets in prompts: never place passwords or keys in the system message, since users may coax them out.
  • Monitor and test: try attacks yourself, a practice called red teaming, before others do.

Fairness, honesty and transparency

Models can reflect biases found in their training data. They can also sound sure when wrong. Responsible deployment includes telling users they are talking to an AI, showing sources where possible, offering a way to reach a human, testing across different groups of users, and keeping people responsible for important decisions in areas like hiring, lending, health, and law.

Evaluating quality

Measure what matters: how often answers are correct, how often they are grounded in the sources, how often they refuse wrongly, and how often they say harmful things. Use a test set, automatic scoring where possible, and regular human review. Repeat the tests whenever you change models, prompts, or data.

Everyday analogy

A car has seat belts, airbags, brakes, and lane warnings. No single one makes it safe. Each covers what the others miss. Content filters, injection defenses, permission checks, and human review do the same job for an AI application.

!
Never trust the output blindly

Do not run model-written commands, queries, or code against important systems without checks. Treat the output as untrusted input from a very articulate stranger.

13Security, Privacy and Networking

Prompts often contain customer names, contracts, and plans. Protect the road, the door, and the contents.

flowchart TD
    A["Who can call the model"] --> B["Microsoft Entra ID and role assignments"]
    B --> C["How the app signs in: managed identity, no stored keys"]
    C --> D["Network path: private endpoint and firewall rules"]
    D --> E["Encryption in transit and at rest, optional customer keys"]
    E --> F["Data minimization in prompts"]
    F --> G["Logging, audit and alerts"]
    
FIG 13.1 — Layers of protection around model calls

Identity and permissions

The service supports simple secret keys, but the stronger option is Microsoft Entra ID with role-based access control. Applications running in Azure can use a managed identity, an identity that Azure creates and rotates automatically, so no secret ever sits in code or settings. Give each application only the role it needs, such as permission to call models, and keep the permission to create or change deployments for a small administrator group. You can also switch off key-based access entirely so that only identity-based sign-in works.

Network protection

By default, the endpoint can be reached over the public internet, protected by encryption and sign-in. For tighter control, attach a private endpoint so that the service appears on a private address inside your virtual network, and then disable public access. Add firewall rules to allow only known networks. Calls from on-premises sites can reach it through a private connection.

Encryption

Data is encrypted while it travels and while it is stored. If your rules require it, you can bring your own encryption key, held in Azure Key Vault, for data such as fine-tuning files and customer content stored by the service.

Data privacy and residency

  • Training: your prompts and completions are not used to train the base models, according to Microsoft’s current commitments.
  • Residency: choose regional processing when law demands that data stay in a place, and understand how wider processing options route requests.
  • Retention: know what is stored, for how long, and why, including short-term abuse monitoring storage and any logging that you turn on.
  • Minimization: send only the data the model truly needs. Remove or mask names, ID numbers, and card details before they enter a prompt.

Logging with care

Logging full prompts and answers helps debugging and audits, but those logs may then contain sensitive data. Decide what to record, protect the log store as strictly as the original data, set a retention period, and limit who may read it.

Everyday analogy

Treat a prompt like a postcard you are about to send. Anyone who sees it can read everything. Before sending, ask whether each detail needs to be on it, and whether it travels by a locked courier (private network) rather than an open mailbox.

!
Classic mistakes

Embedding API keys in a mobile app or web page, sharing one key across all teams, leaving public access open on a service that holds sensitive workloads, logging full conversations to an open location, and sending raw personal data when a masked version would do.

14Resilience, Scaling and Performance

Making AI features fast, steady, and available when the whole company starts using them.

Why limits are hit

Every deployment has capacity ceilings. During a launch, a marketing campaign, or a monthly report run, requests can surge past them, and the service responds with rate-limit errors. This is normal behavior, not a failure, but your application must expect it.

Retry with backoff

When you receive a rate-limit or temporary error, wait and try again, waiting longer after each failure and adding a little randomness so that many clients do not retry at the same moment. Honor any wait time the service tells you. Set a maximum number of tries so that one broken request does not loop forever.

The gateway pattern

An API gateway, such as Azure API Management, can stand between your applications and the model endpoints. It gives you one place to apply sign-in checks, per-team limits, and logging. It can spread requests over several deployments in different regions, fail over when one is unhealthy or throttled, count tokens per team for chargeback, and cache repeated answers.

flowchart TD
    APPS["Applications and teams"] --> GW["API gateway: identity, limits, logging, failover"]
    GW -->|"preferred"| P1["Provisioned deployment in region one"]
    GW -->|"overflow"| S1["Standard deployment in region one"]
    GW -->|"backup"| S2["Standard deployment in region two"]
    GW --> CACHE["Cache of repeated answers"]
    GW --> MON["Token usage per team"]
    
FIG 14.1 — A gateway spreading load and failing over across deployments
1

Send to the preferred deployment

Use reserved capacity for steady, important traffic.

2

Overflow on limit

If it returns a rate-limit error, route the request to a pay-as-you-go deployment.

3

Fail over on outage

If a region is unhealthy, send traffic to a second region and mark the first as unavailable for a cooling period.

4

Degrade gracefully

If everything is busy, fall back to a smaller model, a cached answer, or a polite “try again shortly” message.

Regional outages

A single region can have trouble. For important systems, deploy the same models in at least two regions, with data and search indexes available in both, and let the gateway or application switch over. Remember that quotas are per region, so each region needs its own allocation.

Making it faster

Shorter

Trim the prompt

Send only the passages and history that are needed. Fewer input tokens means a quicker first word and a lower bill.

Smaller

Pick the right model size

Use a smaller model for simple steps, and a larger one only where it earns its cost.

Stream

Show answers as they arrive

Streaming makes the experience feel faster even when total time is unchanged.

Reuse

Cache and share prefixes

Place stable instructions at the start so repeated beginnings can be reused, and cache answers to frequent identical questions.

Capacity planning

Estimate the number of users, the requests per user per hour, and the average prompt and answer tokens. Multiply to get tokens per minute at peak, add a safety margin, and compare it with your quota. Run a load test that imitates real prompts. Revisit the numbers every time a feature is added, since a single new feature that adds long documents to each prompt can multiply your token use.

i
Do not retry blindly

Retrying a request that fails because the content filter blocked it, or because the prompt is too long, will never succeed and only wastes quota. Retry only temporary errors.

15Monitoring, Logging and Metrics

AI features fail in quiet ways. Good measurement is how you notice before your users do.

Platform metrics

Metrics are numbers collected over time and shown as charts. The service reports these to Azure Monitor.

MetricWhat it tells youWorry sign
Request count and error countTraffic and how much of it failsRising errors or sudden drops in traffic
Rate-limit responsesHow often you hit your quotaRegular occurrences at normal load
Prompt tokensSize of what you sendSteady growth after a feature release
Completion tokensSize of what comes backUnexpectedly long answers
Latency and time to first tokenHow fast users see resultsSlow drift upward or big spikes
Provisioned capacity utilizationHow full reserved capacity isNear the top for long periods, or very low
Content filter hitsHow often safety filters triggerSudden surges, which may signal abuse or a prompt bug

Logs and traces

Through diagnostic settings you can send service logs to a Log Analytics workspace, a storage account, or an event stream. Logs record who called which deployment, when, with what outcome. Full text of prompts and answers is not recorded unless you set up logging for it yourself, usually through your application or a gateway. If you do record content, treat it as sensitive.

A trace follows one user request through all of your components: the application, the search service, the gateway, the model call, and the tools. Giving each request a unique identifier, and passing it along, lets you answer “what happened to this one conversation?” in minutes.

Quality monitoring

Infrastructure metrics cannot tell you whether answers are good. Add quality signals: thumbs up or down from users, how often users rephrase the same question, how often the assistant says “I do not know”, how often a human takes over, and automatic scoring of a sample of answers for correctness and grounding. Watch these trends after each model or prompt change.

1

Alert on symptoms

Notify the team when errors, rate limits, or latency pass the limits users would notice.

2

Find the layer

Check whether the trouble is in retrieval, the gateway, the model service, or your own code.

3

Look at real examples

Open traces for failing requests. Look at what was retrieved and what was sent to the model.

4

Fix and add a test

Repair the cause and add the failing example to your test set so it never returns silently.

Cost visibility

Track tokens by application, team, and feature. Because the bill is driven by tokens, token charts are cost charts. Set budgets and alerts so that a runaway loop or an unexpectedly popular feature is caught within hours, not at month end.

i
Baseline first

Record what normal usage looks like for each feature. Without a baseline, “two million tokens a day” means nothing. With one, you can spot that today’s number is triple the usual before the invoice does.

16Deployment, Model Lifecycle and Cost Control

Setting it up repeatably, living with changing models, and keeping the bill predictable.

Creating and describing the setup

The portal is a friendly place to learn, but real projects describe resources and deployments in text files using infrastructure as code tools such as ARM templates, Bicep, or Terraform. The files declare the resource, its network settings, its deployments with model and capacity, its role assignments, and its diagnostic settings. A release pipeline applies them identically in every environment, so development, test, and production behave alike.

Environments and separation

Keep separate resources for development, testing, and production, each with its own quota and identities. Separation prevents experiments from consuming production capacity and keeps test data out of live systems. Many companies also separate by team or business unit, so that costs and permissions are clear.

Living with model retirement

Models are versioned, and old versions are retired on published dates. You can sometimes choose whether a deployment stays on a fixed version or follows updates automatically. A fixed version gives stability but requires planned upgrades before retirement. Automatic updates reduce chores but may change behavior unexpectedly. Either way, keep a test set that you can run against a new version before switching.

1

Watch announcements

Subscribe to model lifecycle notices and keep a list of which models each application uses.

2

Test the new version

Run your evaluation set and compare quality, speed, and cost against the old one.

3

Adjust prompts

Fix small differences in style or instruction-following, and retune settings if needed.

4

Roll out gradually

Send a small share of traffic to the new deployment, compare, and then switch fully.

Understanding the bill

Costs have a few parts. Exact prices vary by model, region, and deployment type, so use Microsoft’s calculator for numbers.

Per token

Input and output tokens

Charged separately, usually with output costing more per token than input. Reusable repeated prefixes may be cheaper.

Reserved

Provisioned capacity

An hourly charge for the reserved units, whether or not you use them.

Hosting

Fine-tuned model hosting

A model you tuned may carry an hourly hosting fee while deployed, plus the one-time training cost.

Around it

Supporting services

Search indexes, storage, gateways, networking, and monitoring are billed separately and can add up.

Ways to lower cost

  • Choose the smallest model that passes your quality tests
  • Shorten prompts, history, and retrieved passages
  • Cap the maximum output length
  • Cache answers to frequent identical questions
  • Use batch processing for work that can wait
  • Mix reserved capacity for steady load with pay-as-you-go for spikes
  • Remove idle deployments, especially hosted fine-tuned ones

Common cost surprises

  • Whole documents pasted into every prompt
  • Agent loops that call the model again and again
  • Chat history that grows without trimming
  • Reasoning models used for simple jobs
  • Reserved capacity sitting mostly idle
  • Debug logging of huge prompts kept forever
i
Cost and value

Compare cost to the value of the task, not to zero. A few cents per support conversation may be a bargain compared with a human agent’s time, but a few cents per invisible background step multiplied by millions may not be.

17Design Patterns and Anti-patterns

A pattern is a recipe that worked many times. An anti-pattern is a trap that looks tempting and hurts later.

Helpful patterns

Pattern: Grounded question answering

Retrieve relevant passages, instruct the model to answer only from them, show citations, and admit when the answer is missing. This is the standard approach for company knowledge assistants.

Pattern: Router and specialists

A small, cheap model first classifies the request, then sends it to the right specialist: a simple template, a medium model, or a powerful reasoning model. You pay for power only when it is needed.

Pattern: Extract, validate, act

Ask the model to pull structured facts from messy text, validate them with ordinary code against rules and databases, and only then take action. The model reads, your code decides.

Pattern: Human in the loop

The model drafts and a person approves, especially for messages sent to customers, legal wording, or money movement. Over time you can reduce review for categories that prove reliable.

Pattern: Gateway for control

All model calls go through a gateway that handles identity, rate limits, logging, failover, and chargeback, giving the organization one policy point.

Pattern: Summarize, then reason

For very long inputs, first summarize pieces in parallel with a cheaper model, and then combine the summaries in a final step, staying inside the context window.

flowchart TD
    REQ["Incoming request"] --> CL["Small model classifies the request"]
    CL -->|"simple"| T["Template or cached answer"]
    CL -->|"knowledge question"| RAG["Retrieve then answer with mid-size model"]
    CL -->|"hard reasoning"| RS["Reasoning model"]
    CL -->|"needs action"| AGT["Agent with limited tools and approval"]
    T --> OUT["Validated response"]
    RAG --> OUT
    RS --> OUT
    AGT --> OUT
    
FIG 17.1 — A router sending each request to the cheapest suitable path

Anti-patterns to avoid

ANTI-01Avoid
The trap

Asking the model facts it cannot know, such as private company data or today’s news, and trusting the confident answer.

Why it hurts

It invents plausible but wrong details, and users act on them.

Better approach

Ground answers in retrieved sources, require citations, and tell the model to say when it does not know.

ANTI-02Avoid
The trap

Putting the access key in a browser or mobile app, or letting the model run commands directly against production systems.

Why it hurts

Anyone can steal the key or trick the model into harmful actions, and you pay for their usage.

Better approach

Call the service from a trusted back end using managed identity, and keep every action behind your own permission checks.

ANTI-03Avoid
The trap

Stuffing as many documents as possible into every prompt to be safe.

Why it hurts

Costs rise, speed drops, and answers often get worse, because relevant facts are lost among noise.

Better approach

Retrieve a small set of high-quality passages, rank them well, and trim history.

ANTI-04Avoid
The trap

Changing prompts and models with no test set, judging quality by a few hand-picked examples.

Why it hurts

Regressions slip in unnoticed, and nobody knows whether a change helped.

Better approach

Keep an evaluation set, run it on every change, and track scores over time.

ANTI-05Avoid
The trap

No retry logic, no timeouts, no limits on agent loops, and no fallback when the service is busy.

Why it hurts

Normal rate limits look like outages, and a looping agent can burn through your budget.

Better approach

Use backoff, set timeouts and step limits, add fallbacks, and alert on unusual token use.

18Best Practices and Common Mistakes

A practical checklist to carry into any project.

Do this

  • Use managed identity and role-based access, not shared keys
  • Use private networking for sensitive workloads
  • Start with the smallest model that passes your tests
  • Ground answers in your data and show sources
  • Write clear system messages and keep them in version control
  • Build an evaluation set and rerun it on every change
  • Handle rate limits with backoff, and add failover
  • Cap output length, history, and agent steps
  • Filter retrieved documents by the user’s access rights
  • Track tokens and cost by feature and team
  • Plan for model retirement dates
  • Keep a human in the loop for high-stakes actions

Avoid this

  • Treating answers as facts without checks
  • Sending more personal data than needed
  • Placing secrets or hidden rules in prompts
  • Using the strongest model for every step
  • Skipping safety testing and red teaming
  • Letting chat history grow without limit
  • Ignoring quota until launch day
  • Leaving unused deployments running

Mistakes beginners make, and how to dodge them

  • Expecting memory. The model is stateless. If you do not send the history, it does not exist for the model.
  • Expecting identical answers. Even at low temperature, outputs can vary slightly. Design your application to tolerate variation, and validate results.
  • Confusing fine-tuning with teaching facts. Use retrieval for knowledge and fine-tuning for style or format.
  • Forgetting the output side. Safe prompts do not guarantee safe answers. Filter and validate both directions.
  • Over-promising. Tell stakeholders what the system can and cannot do, and measure it honestly.
“Let the model write, let your code decide, and let a person approve what matters.”

19Real-World Scenarios

Four typical situations, described as realistic example setups, showing how the pieces combine.

Scenario 1: A company knowledge assistant

A large company builds an assistant that answers staff questions about HR policy, IT help, and product manuals. Documents are chunked, embedded, and stored in a search index with access labels. Each question retrieves passages the asker is allowed to see, and a mid-size chat model answers with citations. A gateway applies per-department limits and records token use, and a feedback button feeds a weekly quality review.

Scenario 2: Customer support triage and drafting

A retailer receives thousands of emails daily. A small, fast model classifies each message by topic and urgency and extracts order numbers in a strict structured format. Simple cases get a drafted reply based on templates and order data, which an agent approves with one click. Complex or angry cases go straight to a person. Costs stay low because the strongest model is rarely needed.

Scenario 3: Overnight document processing

A finance team must summarize and label tens of thousands of contracts. The work is submitted through a batch deployment at night, so it is cheaper and does not compete with daytime users for capacity. Results are validated by rules, such as checking that dates and amounts exist, and exceptions go to a review queue.

Scenario 4: A voice-enabled service desk

A utility company adds a spoken assistant to its phone line. A speech model transcribes the caller, a chat model with limited tools looks up the caller’s account only after identity checks, and a speech model reads the answer aloud. Sensitive actions such as payments transfer the call to a human. Low delay is critical, so the team uses reserved capacity and short prompts.

i
A note on these examples

These are composite examples created to teach design choices, not claims about any named company’s private architecture. Microsoft’s official customer stories are a good source of real, verified case studies.

How to talk about it in an interview

A strong short answer might sound like this: “Azure OpenAI Service hosts OpenAI models behind an Azure endpoint with enterprise security. I create a resource, deploy a model with a name and capacity, and call it with managed identity over a private network. I ground answers with retrieval from Azure AI Search, use tool calling for actions behind permission checks, apply content filters and prompt injection defenses, and put an API gateway in front for limits, failover, and token tracking. I choose the smallest model that passes an evaluation set and monitor tokens, latency, errors, and answer quality.” Then be ready to explain the reasoning behind each choice using the ideas in this guide.

20Frequently Asked Questions

Q1Is Azure OpenAI the same as ChatGPT?
No. ChatGPT is a finished consumer product from OpenAI. Azure OpenAI is a developer service that gives you the underlying models inside your own Azure environment, so you build your own applications on them.
Q2Are my prompts used to train the models?
According to Microsoft’s published commitments, prompts and completions are not used to train the base models or shared with other customers. Read the current data privacy documentation for exact details on retention and abuse monitoring.
Q3What is a token, and why does it matter?
A token is a small piece of text, roughly three quarters of an English word. Limits, speed, and cost are all measured in tokens, so shorter prompts and answers are cheaper and faster.
Q4Why does the model sometimes make things up?
It is built to produce likely-sounding text, not to look up verified facts. Grounding it in retrieved documents, asking for citations, and checking important output reduce the problem but cannot remove it completely.
Q5Should I use RAG or fine-tuning?
Use retrieval when the model needs your facts, especially ones that change. Use fine-tuning when you need a consistent style or format at scale. Many solutions use retrieval first and add fine-tuning only if needed.
Q6What does a “429” or rate limit error mean?
You went over your allowed tokens or requests per minute. Wait for the time the service suggests, retry with backoff, and consider more quota, reserved capacity, or a gateway that spreads load.
Q7Do I need an API key?
Keys work but are risky. Prefer Microsoft Entra ID with managed identities, so no secret is stored, and disable key access where your policy allows.
Q8How do I keep the model from leaking private data?
Send only needed data, filter retrieved documents by the user’s rights, keep secrets out of prompts, restrict tools, filter outputs, and log carefully. Remember that anything in the prompt can potentially appear in the answer.
Q9What happens when a model is retired?
Deployments on that version stop working after the retirement date. Test newer versions early, adjust prompts, and switch before the deadline.
Q10Standard or provisioned?
Start with standard pay-as-you-go. Move steady, heavy, latency-sensitive traffic to provisioned capacity once you know your usage, and keep standard for overflow and testing.
Q11Can the model remember earlier conversations?
Not by itself. Your application must store and resend earlier messages, or summaries of them, with each request. You can also keep long-term notes in a database and retrieve them when relevant.
Q12How can I lower the cost?
Pick smaller models for simple steps, trim prompts and history, cap output length, cache repeated answers, use batch for non-urgent work, and monitor tokens per feature so surprises show up early.

21Summary and Key Takeaways

You have now followed a question from a user’s screen, through your application, a gateway, an endpoint, safety filters, and a model that writes one token at a time, and back to the user. The thread running through everything is simple: Azure OpenAI Service gives you powerful models in a managed, secure setting, while you keep responsibility for good prompts, grounded data, careful permissions, honest testing, and sensible spending.

Key Takeaways

  • It is models as a managed service. You create a resource, deploy a named model, and call it, with Azure identity, networking, and monitoring around it.
  • Tokens run everything. Limits, speed, and cost are all measured in tokens, so keep prompts focused and outputs capped.
  • Models write; they do not know. Ground answers in your own data through retrieval, show sources, and validate important output.
  • Choose the lightest tool that works. Better prompts first, then retrieval, then tools or agents, and fine-tuning only for style or format at scale.
  • Defend in layers. Use managed identity, private networks, content filters, injection defenses, permission checks on every tool, and human approval for risky actions.
  • Plan for limits and change. Use backoff, gateways, multi-region failover, and a test set, because quotas bite and models retire.
  • Measure everything. Track tokens, latency, errors, and answer quality by feature, and treat cost as a feature from day one.