Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Item-item yang ditandai (pratinjau) dalam artikel ini saat ini sedang berada dalam pratinjau publik. Pratinjau ini disediakan tanpa kesepakatan tingkat layanan, dan kami tidak merekomendasikannya untuk penggunaan dalam lingkungan produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.
Artikel ini menjelaskan cara menggunakan kemampuan penalaran model penyelesaian obrolan yang disebarkan di Model Azure AI Foundry.
Model Penalaran
Model penalaran dapat mencapai tingkat performa yang lebih tinggi di domain seperti matematika, pengkodean, sains, strategi, dan logistik. Cara model ini menghasilkan output adalah dengan secara eksplisit menggunakan rantai pemikiran untuk menjelajahi semua jalur yang mungkin sebelum menghasilkan jawaban. Mereka memverifikasi jawaban mereka saat mereka menghasilkannya, yang membantu mencapai kesimpulan yang lebih akurat. Akibatnya, model penalaran mungkin memerlukan lebih sedikit konteks dalam meminta untuk menghasilkan hasil yang efektif.
Cara penskalaan performa model ini disebut sebagai waktu komputasi inferensi karena memperdagangkan performa terhadap latensi dan biaya yang lebih tinggi. Sebaliknya, pendekatan lain mungkin menskalakan melalui waktu komputasi pelatihan.
Model penalaran menghasilkan dua jenis konten sebagai output:
- Penyelesaian Logika
- Penyempurnaan hasil
Kedua penyelesaian ini diperhitungkan sebagai konten yang dihasilkan dari model. Oleh karena itu, mereka berkontribusi pada batas token dan biaya yang terkait dengan model. Beberapa model, seperti DeepSeek-R1
, mungkin merespons dengan konten penalaran. Lainnya, seperti o1
, hanya menghasilkan penyelesaian.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
Sebuah langganan Azure. Jika Anda menggunakan GitHub Models, Anda dapat meningkatkan pengalaman Anda dan membuat langganan Azure dalam proses ini. Baca Peningkatan dari Model GitHub ke Model Azure AI Foundry jika itu situasi Anda.
Sumber daya Azure AI Foundry (sebelumnya dikenal sebagai Azure AI Services). Untuk informasi selengkapnya, lihat Membuat sumber daya Azure AI Foundry.
Alamat URL endpoint dan kuncinya.
Instal SDK dengan perintah berikut:
pip install -U openai
Penyebaran model dengan kemampuan penalaran. Jika Anda tidak memilikinya, baca Menambahkan dan mengonfigurasi Model Foundry untuk menambahkan model penalaran.
- Contoh ini menggunakan
DeepSeek-R1
.
- Contoh ini menggunakan
Gunakan kemampuan penalaran saat percakapan.
Pertama, buat klien untuk memanfaatkan model. Kode berikut menggunakan URL titik akhir dan kunci yang disimpan dalam variabel lingkungan.
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = "https://<resource>.services.ai.azure.com",
api_key=os.getenv("AZURE_INFERENCE_CREDENTIAL"),
api_version="2024-10-21",
)
Jika Anda telah mengonfigurasi sumber daya ke dengan dukungan MICROSOFT Entra ID , Anda dapat menggunakan cuplikan kode berikut untuk membuat klien.
import os
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAI(
azure_endpoint = "https://<resource>.services.ai.azure.com",
azure_ad_token_provider=token_provider,
api_version="2024-10-21",
)
Model pemicu penalaran
Saat membuat permintaan untuk model penalaran, pertimbangkan hal berikut:
- Gunakan instruksi sederhana dan hindari menggunakan teknik rantai pemikiran.
- Kemampuan penalaran bawaan membuat perintah zero-shot sederhana sama efektifnya dengan metode yang lebih kompleks.
- Dalam skenario seperti RAG, saat memberikan konteks atau dokumen tambahan, termasuk hanya informasi yang paling relevan dapat membantu mencegah model terlalu mempersulit responsnya.
- Model penalaran dapat mendukung penggunaan pesan sistem. Namun, mereka mungkin tidak mengikutinya dengan ketat seperti model non-penalaran lainnya.
- Saat membuat aplikasi multi-giliran, pertimbangkan untuk menambahkan hanya jawaban akhir dari model, tanpa konten penalaran, seperti yang dijelaskan di bagian Konten penalaran .
Perhatikan bahwa model penalaran dapat memakan waktu lebih lama untuk menghasilkan respons. Mereka menggunakan rantai pemikiran penalaran panjang yang memungkinkan pemecahan masalah yang lebih dalam dan lebih terstruktur. Mereka juga melakukan verifikasi diri untuk memeriksa jawaban mereka dan memperbaiki kesalahan, sehingga menampilkan perilaku reflektif diri yang berkembang.
Membuat permintaan penyelesaian obrolan
Contoh berikut menunjukkan bagaimana Anda dapat membuat permintaan obrolan dasar ke model.
response = client.chat.completions.create(
model="deepseek-r1",
messages=[
{"role": "user", "content": "How many languages are in the world?"}
]
)
Responsnya adalah sebagai berikut, di mana Anda dapat melihat statistik penggunaan model:
print("Response:", response.choices[0].message.content)
print("Model:", response.model)
print("Usage:")
print("\tPrompt tokens:", response.usage.prompt_tokens)
print("\tTotal tokens:", response.usage.total_tokens)
print("\tCompletion tokens:", response.usage.completion_tokens)
Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: deepseek-r1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Materi Penalaran
Beberapa model penalaran, seperti DeepSeek-R1, menghasilkan penyelesaian dan menyertakan penalaran di baliknya.
Penalaran yang terkait dengan penyelesaian disertakan dalam bidang reasoning_content
. Model dapat memilih skenario mana untuk menghasilkan konten penalaran.
print("Thinking:", response.choices[0].message.reasoning_content)
Thinking: Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer...
Saat melakukan percakapan yang berlangsung beberapa kali, sebaiknya hindari mengirimkan konten penalaran dalam riwayat obrolan, karena penalaran cenderung menghasilkan penjelasan yang panjang.
Siarkan konten
Secara default, API penyelesaian mengembalikan seluruh konten yang dihasilkan dalam satu respons. Jika Anda menghasilkan penyelesaian yang lama, menunggu respons dapat memakan waktu banyak detik.
Anda dapat stream konten untuk mendapatkannya seiring dengan proses pembuatannya. Konten streaming memungkinkan Anda untuk mulai memproses penyelesaian saat konten tersedia. Mode ini mengembalikan objek yang mengalirkan respons kembali dalam bentuk peristiwa yang hanya berisi data yang dikirimkan oleh server. Ekstrak potongan dari bidang delta, bukan bidang pesan.
Untuk melakukan streaming penyelesaian, atur stream=True
saat Anda memanggil model.
response = client.chat.completions.create(
model="deepseek-r1",
messages=[
{"role": "user", "content": "How many languages are in the world?"}
],
stream=True
)
Untuk memvisualisasikan output, tentukan fungsi pembantu untuk mencetak aliran. Contoh berikut mengimplementasikan perutean yang mengalirkan hanya jawaban tanpa konten penalaran:
Konten penalaran juga disertakan di dalam bagian delta dari respons, di kunci reasoning_content
.
def print_stream(completion):
"""
Prints the chat completion with streaming.
"""
is_thinking = False
for event in completion:
if event.choices:
content = event.choices[0].delta.content
reasoning_content = event.choices[0].delta.reasoning_content if hasattr(event.choices[0].delta, "reasoning_content") else None
if reasoning_content and not is_thinking:
is_thinking = True
print("🧠Thinking...", end="", flush=True)
elif content:
if is_thinking:
is_thinking = False
print("🛑\n\n")
print(content or reasoning_content, end="", flush=True)
print_stream(response)
Anda dapat memvisualisasikan cara streaming menghasilkan konten:
print_stream(response)
Parameter-parameternya
Secara umum, model penalaran tidak mendukung parameter berikut yang dapat Anda temukan dalam model penyelesaian obrolan:
- Suhu
- Penalti atas kehadiran
- Hukuman Pengulangan
- Parameter
top_p
Beberapa model mendukung penggunaan alat atau output terstruktur (termasuk Skema JSON). Baca halaman Detail model untuk memahami dukungan setiap model.
Menerapkan Pagar pembatas dan kontrol
Azure AI Model Inference API mendukung Azure AI Content Safety. Saat Anda menggunakan penyebaran dengan Azure AI Content Safety diaktifkan, input dan output melewati ansambel model klasifikasi yang bertujuan mendeteksi dan mencegah output konten berbahaya. Sistem pemfilteran konten mendeteksi dan mengambil tindakan pada kategori tertentu dari konten yang berpotensi berbahaya dalam perintah input dan penyelesaian output.
Contoh berikut menunjukkan cara menangani peristiwa saat model mendeteksi konten berbahaya dalam perintah input.
try:
response = client.chat.completions.create(
model="deepseek-r1",
messages=[
{"role": "user", "content": "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."}
],
)
print(response.choices[0].message.content)
except HttpResponseError as ex:
if ex.status_code == 400:
response = ex.response.json()
if isinstance(response, dict) and "error" in response:
print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
else:
raise
raise
Petunjuk / Saran
Untuk mempelajari selengkapnya tentang cara mengonfigurasi dan mengontrol pengaturan Keamanan Konten Azure AI, periksa dokumentasi Keamanan Konten Azure AI.
Penting
Item-item yang ditandai (pratinjau) dalam artikel ini saat ini sedang berada dalam pratinjau publik. Pratinjau ini disediakan tanpa kesepakatan tingkat layanan, dan kami tidak merekomendasikannya untuk penggunaan dalam lingkungan produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.
Artikel ini menjelaskan cara menggunakan kemampuan penalaran model penyelesaian obrolan yang disebarkan di Model Azure AI Foundry.
Model Penalaran
Model penalaran dapat mencapai tingkat performa yang lebih tinggi di domain seperti matematika, pengkodean, sains, strategi, dan logistik. Cara model ini menghasilkan output adalah dengan secara eksplisit menggunakan rantai pemikiran untuk menjelajahi semua jalur yang mungkin sebelum menghasilkan jawaban. Mereka memverifikasi jawaban mereka saat mereka menghasilkannya, yang membantu mencapai kesimpulan yang lebih akurat. Akibatnya, model penalaran mungkin memerlukan lebih sedikit konteks dalam meminta untuk menghasilkan hasil yang efektif.
Cara penskalaan performa model ini disebut sebagai waktu komputasi inferensi karena memperdagangkan performa terhadap latensi dan biaya yang lebih tinggi. Sebaliknya, pendekatan lain mungkin menskalakan melalui waktu komputasi pelatihan.
Model penalaran menghasilkan dua jenis konten sebagai output:
- Penyelesaian Logika
- Penyempurnaan hasil
Kedua penyelesaian ini diperhitungkan sebagai konten yang dihasilkan dari model. Oleh karena itu, mereka berkontribusi pada batas token dan biaya yang terkait dengan model. Beberapa model, seperti DeepSeek-R1
, mungkin merespons dengan konten penalaran. Lainnya, seperti o1
, hanya menghasilkan penyelesaian.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
Sebuah langganan Azure. Jika Anda menggunakan GitHub Models, Anda dapat meningkatkan pengalaman Anda dan membuat langganan Azure dalam proses ini. Baca Peningkatan dari Model GitHub ke Model Azure AI Foundry jika itu situasi Anda.
Sumber daya Azure AI Foundry (sebelumnya dikenal sebagai Azure AI Services). Untuk informasi selengkapnya, lihat Membuat sumber daya Azure AI Foundry.
Alamat URL endpoint dan kuncinya.
Instal pustaka Azure Inference untuk JavaScript dengan perintah berikut:
npm install @azure-rest/ai-inference npm install @azure/core-auth npm install @azure/identity
Jika Anda menggunakan Node.js, Anda dapat mengonfigurasi dependensi di package.json:
package.json
{ "name": "main_app", "version": "1.0.0", "description": "", "main": "app.js", "type": "module", "dependencies": { "@azure-rest/ai-inference": "1.0.0-beta.6", "@azure/core-auth": "1.9.0", "@azure/core-sse": "2.2.0", "@azure/identity": "4.8.0" } }
Impor yang berikut ini:
import ModelClient from "@azure-rest/ai-inference"; import { isUnexpected } from "@azure-rest/ai-inference"; import { createSseStream } from "@azure/core-sse"; import { AzureKeyCredential } from "@azure/core-auth"; import { DefaultAzureCredential } from "@azure/identity";
Penyebaran model dengan kemampuan penalaran. Jika Anda tidak memilikinya, baca Menambahkan dan mengonfigurasi Model Foundry untuk menambahkan model penalaran.
- Contoh ini menggunakan
DeepSeek-R1
.
- Contoh ini menggunakan
Gunakan kemampuan penalaran saat percakapan.
Pertama, buat klien untuk memanfaatkan model. Kode berikut menggunakan URL titik akhir dan kunci yang disimpan dalam variabel lingkungan.
const client = ModelClient(
"https://<resource>.services.ai.azure.com/models",
new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);
Jika Anda telah mengonfigurasi sumber daya dengan dukungan ID Microsoft Entra, Anda dapat menggunakan cuplikan kode berikut untuk membuat klien.
const clientOptions = { credentials: { "https://cognitiveservices.azure.com/.default" } };
const client = ModelClient(
"https://<resource>.services.ai.azure.com/models",
new DefaultAzureCredential()
clientOptions,
);
Model pemicu penalaran
Saat membuat permintaan untuk model penalaran, pertimbangkan hal berikut:
- Gunakan instruksi sederhana dan hindari menggunakan teknik rantai pemikiran.
- Kemampuan penalaran bawaan membuat perintah zero-shot sederhana sama efektifnya dengan metode yang lebih kompleks.
- Dalam skenario seperti RAG, saat memberikan konteks atau dokumen tambahan, termasuk hanya informasi yang paling relevan dapat membantu mencegah model terlalu mempersulit responsnya.
- Model penalaran dapat mendukung penggunaan pesan sistem. Namun, mereka mungkin tidak mengikutinya dengan ketat seperti model non-penalaran lainnya.
- Saat membuat aplikasi multi-giliran, pertimbangkan untuk menambahkan hanya jawaban akhir dari model, tanpa konten penalaran, seperti yang dijelaskan di bagian Konten penalaran .
Perhatikan bahwa model penalaran dapat memakan waktu lebih lama untuk menghasilkan respons. Mereka menggunakan rantai pemikiran penalaran panjang yang memungkinkan pemecahan masalah yang lebih dalam dan lebih terstruktur. Mereka juga melakukan verifikasi diri untuk memeriksa jawaban mereka dan memperbaiki kesalahan, sehingga menampilkan perilaku reflektif diri yang berkembang.
Membuat permintaan penyelesaian obrolan
Contoh berikut menunjukkan bagaimana Anda dapat membuat permintaan obrolan dasar ke model.
var messages = [
{ role: "user", content: "How many languages are in the world?" },
];
var response = await client.path("/chat/completions").post({
body: {
model: "DeepSeek-R1",
messages: messages,
}
});
Responsnya adalah sebagai berikut, di mana Anda dapat melihat statistik penggunaan model:
if (isUnexpected(response)) {
throw response.body.error;
}
console.log("Response: ", response.body.choices[0].message.content);
console.log("Model: ", response.body.model);
console.log("Usage:");
console.log("\tPrompt tokens:", response.body.usage.prompt_tokens);
console.log("\tTotal tokens:", response.body.usage.total_tokens);
console.log("\tCompletion tokens:", response.body.usage.completion_tokens);
Response: <think>Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer...</think>As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred.
Model: deepseek-r1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Materi Penalaran
Beberapa model penalaran, seperti DeepSeek-R1, menghasilkan penyelesaian dan menyertakan penalaran di baliknya. Penalaran yang terkait dengan penyelesaian disertakan dalam konten respons dalam tag <think>
dan </think>
. Model dapat memilih skenario mana yang akan menghasilkan konten penalaran. Anda dapat mengekstrak konten penalaran dari respons untuk memahami proses pemikiran model sebagai berikut:
var content = response.body.choices[0].message.content
var match = content.match(/<think>(.*?)<\/think>(.*)/s);
console.log("Response:");
if (match) {
console.log("\tThinking:", match[1]);
console.log("\Answer:", match[2]);
}
else {
console.log("Response:", content);
}
console.log("Model: ", response.body.model);
console.log("Usage:");
console.log("\tPrompt tokens:", response.body.usage.prompt_tokens);
console.log("\tTotal tokens:", response.body.usage.total_tokens);
console.log("\tCompletion tokens:", response.body.usage.completion_tokens);
Thinking: Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.
Answer: The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: DeepSeek-R1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Saat melakukan percakapan yang berlangsung beberapa kali, sebaiknya hindari mengirimkan konten penalaran dalam riwayat obrolan, karena penalaran cenderung menghasilkan penjelasan yang panjang.
Siarkan konten
Secara default, API penyelesaian mengembalikan seluruh konten yang dihasilkan dalam satu respons. Jika Anda menghasilkan penyelesaian yang lama, menunggu respons dapat memakan waktu banyak detik.
Anda dapat stream konten untuk mendapatkannya seiring dengan proses pembuatannya. Konten streaming memungkinkan Anda untuk mulai memproses penyelesaian saat konten tersedia. Mode ini mengembalikan objek yang mengalirkan respons kembali dalam bentuk peristiwa yang hanya berisi data yang dikirimkan oleh server. Ekstrak potongan dari bidang delta, bukan bidang pesan.
Untuk melakukan streaming penyelesaian, atur stream=True
saat Anda memanggil model.
var messages = [
{ role: "user", content: "How many languages are in the world?" },
];
var response = await client.path("/chat/completions").post({
body: {
model: "DeepSeek-R1",
messages: messages,
stream: true
}
}).asNodeStream();
Untuk memvisualisasikan output, tentukan fungsi pembantu untuk mencetak aliran. Contoh berikut mengimplementasikan perutean yang mengalirkan hanya jawaban tanpa konten penalaran:
async function printStream(sses) {
let isThinking = false;
for await (const event of sses) {
if (event.data === "[DONE]") {
return;
}
for (const choice of (JSON.parse(event.data)).choices) {
const content = choice.delta?.content ?? "";
if (content === "<think>") {
isThinking = true;
process.stdout.write("🧠Thinking...");
} else if (content === "</think>") {
isThinking = false;
console.log("🛑\n\n");
} else if (content) {
process.stdout.write(content);
}
}
}
}
Anda dapat memvisualisasikan cara streaming menghasilkan konten:
var sses = createSseStream(response.body);
await printStream(sses)
Parameter-parameternya
Secara umum, model penalaran tidak mendukung parameter berikut yang dapat Anda temukan dalam model penyelesaian obrolan:
- Suhu
- Penalti atas kehadiran
- Hukuman Pengulangan
- Parameter
top_p
Beberapa model mendukung penggunaan alat atau output terstruktur (termasuk Skema JSON). Baca halaman Detail model untuk memahami dukungan setiap model.
Menerapkan Pagar pembatas dan kontrol
Azure AI Model Inference API mendukung Azure AI Content Safety. Saat Anda menggunakan penyebaran dengan Azure AI Content Safety diaktifkan, input dan output melewati ansambel model klasifikasi yang bertujuan mendeteksi dan mencegah output konten berbahaya. Sistem pemfilteran konten mendeteksi dan mengambil tindakan pada kategori tertentu dari konten yang berpotensi berbahaya dalam perintah input dan penyelesaian output.
Contoh berikut menunjukkan cara menangani peristiwa saat model mendeteksi konten berbahaya dalam perintah input.
try {
var messages = [
{ role: "system", content: "You are an AI assistant that helps people find information." },
{ role: "user", content: "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills." },
];
var response = await client.path("/chat/completions").post({
model: "DeepSeek-R1",
body: {
messages: messages,
}
});
console.log(response.body.choices[0].message.content);
}
catch (error) {
if (error.status_code == 400) {
var response = JSON.parse(error.response._content);
if (response.error) {
console.log(`Your request triggered an ${response.error.code} error:\n\t ${response.error.message}`);
}
else
{
throw error;
}
}
}
Petunjuk / Saran
Untuk mempelajari selengkapnya tentang cara mengonfigurasi dan mengontrol pengaturan Keamanan Konten Azure AI, periksa dokumentasi Keamanan Konten Azure AI.
Penting
Item-item yang ditandai (pratinjau) dalam artikel ini saat ini sedang berada dalam pratinjau publik. Pratinjau ini disediakan tanpa kesepakatan tingkat layanan, dan kami tidak merekomendasikannya untuk penggunaan dalam lingkungan produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.
Artikel ini menjelaskan cara menggunakan kemampuan penalaran model penyelesaian obrolan yang disebarkan di Model Azure AI Foundry.
Model Penalaran
Model penalaran dapat mencapai tingkat performa yang lebih tinggi di domain seperti matematika, pengkodean, sains, strategi, dan logistik. Cara model ini menghasilkan output adalah dengan secara eksplisit menggunakan rantai pemikiran untuk menjelajahi semua jalur yang mungkin sebelum menghasilkan jawaban. Mereka memverifikasi jawaban mereka saat mereka menghasilkannya, yang membantu mencapai kesimpulan yang lebih akurat. Akibatnya, model penalaran mungkin memerlukan lebih sedikit konteks dalam meminta untuk menghasilkan hasil yang efektif.
Cara penskalaan performa model ini disebut sebagai waktu komputasi inferensi karena memperdagangkan performa terhadap latensi dan biaya yang lebih tinggi. Sebaliknya, pendekatan lain mungkin menskalakan melalui waktu komputasi pelatihan.
Model penalaran menghasilkan dua jenis konten sebagai output:
- Penyelesaian Logika
- Penyempurnaan hasil
Kedua penyelesaian ini diperhitungkan sebagai konten yang dihasilkan dari model. Oleh karena itu, mereka berkontribusi pada batas token dan biaya yang terkait dengan model. Beberapa model, seperti DeepSeek-R1
, mungkin merespons dengan konten penalaran. Lainnya, seperti o1
, hanya menghasilkan penyelesaian.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
Sebuah langganan Azure. Jika Anda menggunakan GitHub Models, Anda dapat meningkatkan pengalaman Anda dan membuat langganan Azure dalam proses ini. Baca Peningkatan dari Model GitHub ke Model Azure AI Foundry jika itu situasi Anda.
Sumber daya Azure AI Foundry (sebelumnya dikenal sebagai Azure AI Services). Untuk informasi selengkapnya, lihat Membuat sumber daya Azure AI Foundry.
Alamat URL endpoint dan kuncinya.
Tambahkan paket inferensi Azure AI ke proyek Anda:
<dependency> <groupId>com.azure</groupId> <artifactId>azure-ai-inference</artifactId> <version>1.0.0-beta.4</version> </dependency>
Jika Anda menggunakan ID Entra, Anda juga memerlukan paket berikut:
<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.15.3</version> </dependency>
Impor namespace berikut:
package com.azure.ai.inference.usage; import com.azure.ai.inference.EmbeddingsClient; import com.azure.ai.inference.EmbeddingsClientBuilder; import com.azure.ai.inference.ChatCompletionsClient; import com.azure.ai.inference.ChatCompletionsClientBuilder; import com.azure.ai.inference.models.EmbeddingsResult; import com.azure.ai.inference.models.EmbeddingItem; import com.azure.ai.inference.models.ChatCompletions; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.Configuration; import java.util.ArrayList; import java.util.List;
Penyebaran model dengan kemampuan penalaran. Jika Anda tidak memilikinya, baca Menambahkan dan mengonfigurasi Model Foundry untuk menambahkan model penalaran.
- Contoh ini menggunakan
DeepSeek-R1
.
- Contoh ini menggunakan
Gunakan kemampuan penalaran saat percakapan.
Pertama, buat klien untuk memanfaatkan model. Kode berikut menggunakan URL titik akhir dan kunci yang disimpan dalam variabel lingkungan.
ChatCompletionsClient client = new ChatCompletionsClient(
new URI("https://<resource>.services.ai.azure.com/models"),
new AzureKeyCredential(System.getProperty("AZURE_INFERENCE_CREDENTIAL")),
Petunjuk / Saran
Verifikasi bahwa Anda telah menyebarkan model ke sumber daya Azure AI Services dengan AZURE AI Model Inference API.
Deepseek-R1
juga tersedia sebagai penyebaran API tanpa server. Namun, titik akhir tersebut tidak mengambil parameter model
seperti yang dijelaskan dalam tutorial ini. Anda dapat memverifikasi hal tersebut dengan masuk ke portal Azure AI Foundry, kemudian pergi ke bagian >, dan memastikan bahwa model tercantum di bawah bagian Azure AI Services.
Jika Anda telah mengonfigurasi sumber daya ke dengan dukungan MICROSOFT Entra ID , Anda dapat menggunakan cuplikan kode berikut untuk membuat klien.
client = new ChatCompletionsClient(
new URI("https://<resource>.services.ai.azure.com/models"),
new DefaultAzureCredentialBuilder().build()
);
Model pemicu penalaran
Saat membuat permintaan untuk model penalaran, pertimbangkan hal berikut:
- Gunakan instruksi sederhana dan hindari menggunakan teknik rantai pemikiran.
- Kemampuan penalaran bawaan membuat perintah zero-shot sederhana sama efektifnya dengan metode yang lebih kompleks.
- Dalam skenario seperti RAG, saat memberikan konteks atau dokumen tambahan, termasuk hanya informasi yang paling relevan dapat membantu mencegah model terlalu mempersulit responsnya.
- Model penalaran dapat mendukung penggunaan pesan sistem. Namun, mereka mungkin tidak mengikutinya dengan ketat seperti model non-penalaran lainnya.
- Saat membuat aplikasi multi-giliran, pertimbangkan untuk menambahkan hanya jawaban akhir dari model, tanpa konten penalaran, seperti yang dijelaskan di bagian Konten penalaran .
Perhatikan bahwa model penalaran dapat memakan waktu lebih lama untuk menghasilkan respons. Mereka menggunakan rantai pemikiran penalaran panjang yang memungkinkan pemecahan masalah yang lebih dalam dan lebih terstruktur. Mereka juga melakukan verifikasi diri untuk memeriksa jawaban mereka dan memperbaiki kesalahan, sehingga menampilkan perilaku reflektif diri yang berkembang.
Membuat permintaan penyelesaian obrolan
Contoh berikut menunjukkan bagaimana Anda dapat membuat permintaan obrolan dasar ke model.
ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
.setModel("DeepSeek-R1")
.setMessages(Arrays.asList(
new ChatRequestUserMessage("How many languages are in the world?")
));
Response<ChatCompletions> response = client.complete(requestOptions);
Responsnya adalah sebagai berikut, di mana Anda dapat melihat statistik penggunaan model:
System.out.println("Response: " + response.getValue().getChoices().get(0).getMessage().getContent());
System.out.println("Model: " + response.getValue().getModel());
System.out.println("Usage:");
System.out.println("\tPrompt tokens: " + response.getValue().getUsage().getPromptTokens());
System.out.println("\tTotal tokens: " + response.getValue().getUsage().getTotalTokens());
System.out.println("\tCompletion tokens: " + response.getValue().getUsage().getCompletionTokens());
Response: <think>Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate...</think>The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: deepseek-r1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Materi Penalaran
Beberapa model penalaran, seperti DeepSeek-R1, menghasilkan penyelesaian dan menyertakan penalaran di baliknya. Penalaran yang terkait dengan penyelesaian disertakan dalam konten respons dalam tag <think>
dan </think>
. Model dapat memilih skenario mana yang akan menghasilkan konten penalaran. Anda dapat mengekstrak konten penalaran dari respons untuk memahami proses pemikiran model sebagai berikut:
String content = response.getValue().getChoices().get(0).getMessage().getContent()
Pattern pattern = Pattern.compile("<think>(.*?)</think>(.*)", Pattern.DOTALL);
Matcher matcher = pattern.matcher(content);
System.out.println("Response:");
if (matcher.find()) {
System.out.println("\tThinking: " + matcher.group(1));
System.out.println("\tAnswer: " + matcher.group(2));
}
else {
System.out.println("Response: " + content);
}
System.out.println("Model: " + response.getValue().getModel());
System.out.println("Usage:");
System.out.println("\tPrompt tokens: " + response.getValue().getUsage().getPromptTokens());
System.out.println("\tTotal tokens: " + response.getValue().getUsage().getTotalTokens());
System.out.println("\tCompletion tokens: " + response.getValue().getUsage().getCompletionTokens());
Thinking: Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.
Answer: The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: DeepSeek-R1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Saat melakukan percakapan yang berlangsung beberapa kali, sebaiknya hindari mengirimkan konten penalaran dalam riwayat obrolan, karena penalaran cenderung menghasilkan penjelasan yang panjang.
Siarkan konten
Secara default, API penyelesaian mengembalikan seluruh konten yang dihasilkan dalam satu respons. Jika Anda menghasilkan penyelesaian yang lama, menunggu respons dapat memakan waktu banyak detik.
Anda dapat stream konten untuk mendapatkannya seiring dengan proses pembuatannya. Konten streaming memungkinkan Anda untuk mulai memproses penyelesaian saat konten tersedia. Mode ini mengembalikan objek yang mengalirkan respons kembali dalam bentuk peristiwa yang hanya berisi data yang dikirimkan oleh server. Ekstrak potongan dari bidang delta, bukan bidang pesan.
ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
.setModel("DeepSeek-R1")
.setMessages(Arrays.asList(
new ChatRequestUserMessage("How many languages are in the world? Write an essay about it.")
))
.setMaxTokens(4096);
return client.completeStreamingAsync(requestOptions).thenAcceptAsync(response -> {
try {
printStream(response);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
Untuk memvisualisasikan output, tentukan fungsi pembantu untuk mencetak aliran. Contoh berikut mengimplementasikan perutean yang mengalirkan hanya jawaban tanpa konten penalaran:
public void printStream(StreamingResponse<StreamingChatCompletionsUpdate> response) throws Exception {
boolean isThinking = false;
for (StreamingChatCompletionsUpdate chatUpdate : response) {
if (chatUpdate.getContentUpdate() != null && !chatUpdate.getContentUpdate().isEmpty()) {
String content = chatUpdate.getContentUpdate();
if ("<think>".equals(content)) {
isThinking = true;
System.out.print("🧠Thinking...");
System.out.flush();
} else if ("</think>".equals(content)) {
isThinking = false;
System.out.println("🛑\n\n");
} else if (content != null && !content.isEmpty()) {
System.out.print(content);
System.out.flush();
}
}
}
}
Anda dapat memvisualisasikan cara streaming menghasilkan konten:
try {
streamMessageAsync(client).get();
} catch (Exception e) {
throw new RuntimeException(e);
}
Parameter-parameternya
Secara umum, model penalaran tidak mendukung parameter berikut yang dapat Anda temukan dalam model penyelesaian obrolan:
- Suhu
- Penalti atas kehadiran
- Hukuman Pengulangan
- Parameter
top_p
Beberapa model mendukung penggunaan alat atau output terstruktur (termasuk Skema JSON). Baca halaman Detail model untuk memahami dukungan setiap model.
Penting
Item-item yang ditandai (pratinjau) dalam artikel ini saat ini sedang berada dalam pratinjau publik. Pratinjau ini disediakan tanpa kesepakatan tingkat layanan, dan kami tidak merekomendasikannya untuk penggunaan dalam lingkungan produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.
Artikel ini menjelaskan cara menggunakan kemampuan penalaran model penyelesaian obrolan yang disebarkan di Model Azure AI Foundry.
Model Penalaran
Model penalaran dapat mencapai tingkat performa yang lebih tinggi di domain seperti matematika, pengkodean, sains, strategi, dan logistik. Cara model ini menghasilkan output adalah dengan secara eksplisit menggunakan rantai pemikiran untuk menjelajahi semua jalur yang mungkin sebelum menghasilkan jawaban. Mereka memverifikasi jawaban mereka saat mereka menghasilkannya, yang membantu mencapai kesimpulan yang lebih akurat. Akibatnya, model penalaran mungkin memerlukan lebih sedikit konteks dalam meminta untuk menghasilkan hasil yang efektif.
Cara penskalaan performa model ini disebut sebagai waktu komputasi inferensi karena memperdagangkan performa terhadap latensi dan biaya yang lebih tinggi. Sebaliknya, pendekatan lain mungkin menskalakan melalui waktu komputasi pelatihan.
Model penalaran menghasilkan dua jenis konten sebagai output:
- Penyelesaian Logika
- Penyempurnaan hasil
Kedua penyelesaian ini diperhitungkan sebagai konten yang dihasilkan dari model. Oleh karena itu, mereka berkontribusi pada batas token dan biaya yang terkait dengan model. Beberapa model, seperti DeepSeek-R1
, mungkin merespons dengan konten penalaran. Lainnya, seperti o1
, hanya menghasilkan penyelesaian.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
Sebuah langganan Azure. Jika Anda menggunakan GitHub Models, Anda dapat meningkatkan pengalaman Anda dan membuat langganan Azure dalam proses ini. Baca Peningkatan dari Model GitHub ke Model Azure AI Foundry jika itu situasi Anda.
Sumber daya Azure AI Foundry (sebelumnya dikenal sebagai Azure AI Services). Untuk informasi selengkapnya, lihat Membuat sumber daya Azure AI Foundry.
Alamat URL endpoint dan kuncinya.
Instal paket inferensi Azure AI dengan perintah berikut:
dotnet add package Azure.AI.Inference --prerelease
Jika Anda menggunakan ID Entra, Anda juga memerlukan paket berikut:
dotnet add package Azure.Identity
Penyebaran model dengan kemampuan penalaran. Jika Anda tidak memilikinya, baca Menambahkan dan mengonfigurasi Model Foundry untuk menambahkan model penalaran.
- Contoh ini menggunakan
DeepSeek-R1
.
- Contoh ini menggunakan
Gunakan kemampuan penalaran saat percakapan.
Pertama, buat klien untuk memanfaatkan model. Kode berikut menggunakan URL titik akhir dan kunci yang disimpan dalam variabel lingkungan.
AzureAIInferenceClientOptions clientOptions = new AzureAIInferenceClientOptions(apiVersion);
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri("https://<resource>.services.ai.azure.com/models"),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL")),
clientOptions
);
Jika Anda telah mengonfigurasi sumber daya ke dengan dukungan MICROSOFT Entra ID , Anda dapat menggunakan cuplikan kode berikut untuk membuat klien.
AzureAIInferenceClientOptions clientOptions = new AzureAIInferenceClientOptions(
"2024-05-01-preview",
new string[] { "https://cognitiveservices.azure.com/.default" }
);
client = new ChatCompletionsClient(
new Uri("https://<resource>.services.ai.azure.com/models"),
new DefaultAzureCredential(),
clientOptions,
);
Model pemicu penalaran
Saat membuat permintaan untuk model penalaran, pertimbangkan hal berikut:
- Gunakan instruksi sederhana dan hindari menggunakan teknik rantai pemikiran.
- Kemampuan penalaran bawaan membuat perintah zero-shot sederhana sama efektifnya dengan metode yang lebih kompleks.
- Dalam skenario seperti RAG, saat memberikan konteks atau dokumen tambahan, termasuk hanya informasi yang paling relevan dapat membantu mencegah model terlalu mempersulit responsnya.
- Model penalaran dapat mendukung penggunaan pesan sistem. Namun, mereka mungkin tidak mengikutinya dengan ketat seperti model non-penalaran lainnya.
- Saat membuat aplikasi multi-giliran, pertimbangkan untuk menambahkan hanya jawaban akhir dari model, tanpa konten penalaran, seperti yang dijelaskan di bagian Konten penalaran .
Perhatikan bahwa model penalaran dapat memakan waktu lebih lama untuk menghasilkan respons. Mereka menggunakan rantai pemikiran penalaran panjang yang memungkinkan pemecahan masalah yang lebih dalam dan lebih terstruktur. Mereka juga melakukan verifikasi diri untuk memeriksa jawaban mereka dan memperbaiki kesalahan, sehingga menampilkan perilaku reflektif diri yang berkembang.
Membuat permintaan penyelesaian obrolan
Contoh berikut menunjukkan bagaimana Anda dapat membuat permintaan obrolan dasar ke model.
ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestUserMessage("How many languages are in the world?")
},
Model = "deepseek-r1",
};
Response<ChatCompletions> response = client.Complete(requestOptions);
Responsnya adalah sebagai berikut, di mana Anda dapat melihat statistik penggunaan model:
Console.WriteLine($"Response: {response.Value.Content}");
Console.WriteLine($"Model: {response.Value.Model}");
Console.WriteLine("Usage:");
Console.WriteLine($"\tPrompt tokens: {response.Value.Usage.PromptTokens}");
Console.WriteLine($"\tTotal tokens: {response.Value.Usage.TotalTokens}");
Console.WriteLine($"\tCompletion tokens: {response.Value.Usage.CompletionTokens}");
Response: <think>Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate...</think>The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: deepseek-r1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Materi Penalaran
Beberapa model penalaran, seperti DeepSeek-R1, menghasilkan penyelesaian dan menyertakan penalaran di baliknya. Penalaran yang terkait dengan penyelesaian disertakan dalam konten respons dalam tag <think>
dan </think>
. Model dapat memilih skenario mana yang akan menghasilkan konten penalaran. Anda dapat mengekstrak konten penalaran dari respons untuk memahami proses pemikiran model sebagai berikut:
Regex regex = new Regex(pattern, RegexOptions.Singleline);
Match match = regex.Match(response.Value.Content);
Console.WriteLine("Response:");
if (match.Success)
{
Console.WriteLine($"\tThinking: {match.Groups[1].Value}");
Console.WriteLine($"\tAnswer: {match.Groups[2].Value}");
else
{
Console.WriteLine($"Response: {response.Value.Content}");
}
Console.WriteLine($"Model: {response.Value.Model}");
Console.WriteLine("Usage:");
Console.WriteLine($"\tPrompt tokens: {response.Value.Usage.PromptTokens}");
Console.WriteLine($"\tTotal tokens: {response.Value.Usage.TotalTokens}");
Console.WriteLine($"\tCompletion tokens: {response.Value.Usage.CompletionTokens}");
Thinking: Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.
Answer: The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: DeepSeek-R1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Saat melakukan percakapan yang berlangsung beberapa kali, sebaiknya hindari mengirimkan konten penalaran dalam riwayat obrolan, karena penalaran cenderung menghasilkan penjelasan yang panjang.
Siarkan konten
Secara default, API penyelesaian mengembalikan seluruh konten yang dihasilkan dalam satu respons. Jika Anda menghasilkan penyelesaian yang lama, menunggu respons dapat memakan waktu banyak detik.
Anda dapat stream konten untuk mendapatkannya seiring dengan proses pembuatannya. Konten streaming memungkinkan Anda untuk mulai memproses penyelesaian saat konten tersedia. Mode ini mengembalikan objek yang mengalirkan respons kembali dalam bentuk peristiwa yang hanya berisi data yang dikirimkan oleh server. Ekstrak potongan dari bidang delta, bukan bidang pesan.
static async Task StreamMessageAsync(ChatCompletionsClient client)
{
ChatCompletionsOptions requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestUserMessage("How many languages are in the world?")
},
MaxTokens=4096,
Model = "deepseek-r1",
};
StreamingResponse<StreamingChatCompletionsUpdate> streamResponse = await client.CompleteStreamingAsync(requestOptions);
await PrintStream(streamResponse);
}
Untuk memvisualisasikan output, tentukan fungsi pembantu untuk mencetak aliran. Contoh berikut mengimplementasikan perutean yang mengalirkan hanya jawaban tanpa konten penalaran:
static void PrintStream(StreamingResponse<StreamingChatCompletionsUpdate> response)
{
bool isThinking = false;
await foreach (StreamingChatCompletionsUpdate chatUpdate in response)
{
if (!string.IsNullOrEmpty(chatUpdate.ContentUpdate))
{
string content = chatUpdate.ContentUpdate;
if (content == "<think>")
{
isThinking = true;
Console.Write("🧠Thinking...");
Console.Out.Flush();
}
else if (content == "</think>")
{
isThinking = false;
Console.WriteLine("🛑\n\n");
}
else if (!string.IsNullOrEmpty(content))
{
Console.Write(content);
Console.Out.Flush();
}
}
}
}
Anda dapat memvisualisasikan cara streaming menghasilkan konten:
StreamMessageAsync(client).GetAwaiter().GetResult();
Parameter-parameternya
Secara umum, model penalaran tidak mendukung parameter berikut yang dapat Anda temukan dalam model penyelesaian obrolan:
- Suhu
- Penalti atas kehadiran
- Hukuman Pengulangan
- Parameter
top_p
Beberapa model mendukung penggunaan alat atau output terstruktur (termasuk Skema JSON). Baca halaman Detail model untuk memahami dukungan setiap model.
Menerapkan Pagar pembatas dan kontrol
Azure AI Model Inference API mendukung Azure AI Content Safety. Saat Anda menggunakan penyebaran dengan Azure AI Content Safety diaktifkan, input dan output melewati ansambel model klasifikasi yang bertujuan mendeteksi dan mencegah output konten berbahaya. Sistem pemfilteran konten mendeteksi dan mengambil tindakan pada kategori tertentu dari konten yang berpotensi berbahaya dalam perintah input dan penyelesaian output.
Contoh berikut menunjukkan cara menangani peristiwa saat model mendeteksi konten berbahaya dalam perintah input.
try
{
requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestSystemMessage("You are an AI assistant that helps people find information."),
new ChatRequestUserMessage(
"Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
),
},
Model = "deepseek-r1",
};
response = client.Complete(requestOptions);
Console.WriteLine(response.Value.Content);
}
catch (RequestFailedException ex)
{
if (ex.ErrorCode == "content_filter")
{
Console.WriteLine($"Your query has trigger Azure Content Safety: {ex.Message}");
}
else
{
throw;
}
}
Petunjuk / Saran
Untuk mempelajari selengkapnya tentang cara mengonfigurasi dan mengontrol pengaturan Keamanan Konten Azure AI, periksa dokumentasi Keamanan Konten Azure AI.
Penting
Item-item yang ditandai (pratinjau) dalam artikel ini saat ini sedang berada dalam pratinjau publik. Pratinjau ini disediakan tanpa kesepakatan tingkat layanan, dan kami tidak merekomendasikannya untuk penggunaan dalam lingkungan produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.
Artikel ini menjelaskan cara menggunakan kemampuan penalaran model penyelesaian obrolan yang disebarkan di Model Azure AI Foundry.
Model Penalaran
Model penalaran dapat mencapai tingkat performa yang lebih tinggi di domain seperti matematika, pengkodean, sains, strategi, dan logistik. Cara model ini menghasilkan output adalah dengan secara eksplisit menggunakan rantai pemikiran untuk menjelajahi semua jalur yang mungkin sebelum menghasilkan jawaban. Mereka memverifikasi jawaban mereka saat mereka menghasilkannya, yang membantu mencapai kesimpulan yang lebih akurat. Akibatnya, model penalaran mungkin memerlukan lebih sedikit konteks dalam meminta untuk menghasilkan hasil yang efektif.
Cara penskalaan performa model ini disebut sebagai waktu komputasi inferensi karena memperdagangkan performa terhadap latensi dan biaya yang lebih tinggi. Sebaliknya, pendekatan lain mungkin menskalakan melalui waktu komputasi pelatihan.
Model penalaran menghasilkan dua jenis konten sebagai output:
- Penyelesaian Logika
- Penyempurnaan hasil
Kedua penyelesaian ini diperhitungkan sebagai konten yang dihasilkan dari model. Oleh karena itu, mereka berkontribusi pada batas token dan biaya yang terkait dengan model. Beberapa model, seperti DeepSeek-R1
, mungkin merespons dengan konten penalaran. Lainnya, seperti o1
, hanya menghasilkan penyelesaian.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
Sebuah langganan Azure. Jika Anda menggunakan GitHub Models, Anda dapat meningkatkan pengalaman Anda dan membuat langganan Azure dalam proses ini. Baca Peningkatan dari Model GitHub ke Model Azure AI Foundry jika itu situasi Anda.
Sumber daya Azure AI Foundry (sebelumnya dikenal sebagai Azure AI Services). Untuk informasi selengkapnya, lihat Membuat sumber daya Azure AI Foundry.
Alamat URL endpoint dan kuncinya.
Penyebaran model dengan kemampuan penalaran. Jika Anda tidak memilikinya, baca Menambahkan dan mengonfigurasi Model Foundry untuk menambahkan model penalaran.
- Contoh ini menggunakan
DeepSeek-R1
.
- Contoh ini menggunakan
Gunakan kemampuan penalaran saat percakapan.
Pertama, buat klien untuk memanfaatkan model. Kode berikut menggunakan URL titik akhir dan kunci yang disimpan dalam variabel lingkungan.
POST https://<resource>.services.ai.azure.com/openai/deployments/deepseek-r1/chat/completions?api-version=2024-10-21
Content-Type: application/json
api-key: <key>
Jika Anda telah mengonfigurasi sumber daya dengan dukungan Microsoft Entra ID, masukkan token Anda di dalam header Authorization
dengan format Bearer <token>
. Gunakan cakupan https://cognitiveservices.azure.com/.default
.
POST https://<resource>.services.ai.azure.com/openai/deployments/deepseek-r1/chat/completions?api-version=2024-10-21
Content-Type: application/json
Authorization: Bearer <token>
Menggunakan ID Microsoft Entra mungkin memerlukan konfigurasi tambahan di sumber daya Anda untuk memberikan akses. Pelajari cara mengonfigurasi autentikasi tanpa kunci dengan MICROSOFT Entra ID.
Model pemicu penalaran
Saat membuat permintaan untuk model penalaran, pertimbangkan hal berikut:
- Gunakan instruksi sederhana dan hindari menggunakan teknik rantai pemikiran.
- Kemampuan penalaran bawaan membuat perintah zero-shot sederhana sama efektifnya dengan metode yang lebih kompleks.
- Dalam skenario seperti RAG, saat memberikan konteks atau dokumen tambahan, termasuk hanya informasi yang paling relevan dapat membantu mencegah model terlalu mempersulit responsnya.
- Model penalaran dapat mendukung penggunaan pesan sistem. Namun, mereka mungkin tidak mengikutinya dengan ketat seperti model non-penalaran lainnya.
- Saat membuat aplikasi multi-giliran, pertimbangkan untuk menambahkan hanya jawaban akhir dari model, tanpa konten penalaran, seperti yang dijelaskan di bagian Konten penalaran .
Perhatikan bahwa model penalaran dapat memakan waktu lebih lama untuk menghasilkan respons. Mereka menggunakan rantai pemikiran penalaran panjang yang memungkinkan pemecahan masalah yang lebih dalam dan lebih terstruktur. Mereka juga melakukan verifikasi diri untuk memeriksa jawaban mereka dan memperbaiki kesalahan, sehingga menampilkan perilaku reflektif diri yang berkembang.
Membuat permintaan penyelesaian obrolan
Contoh berikut menunjukkan bagaimana Anda dapat membuat permintaan obrolan dasar ke model.
{
"model": "deepseek-r1",
"messages": [
{
"role": "user",
"content": "How many languages are in the world?"
}
]
}
Responsnya adalah sebagai berikut, di mana Anda dapat melihat statistik penggunaan model:
{
"id": "0a1234b5de6789f01gh2i345j6789klm",
"object": "chat.completion",
"created": 1718726686,
"model": "DeepSeek-R1",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"reasoning_content": "Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.\n",
"content": "The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.",
"tool_calls": null
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 11,
"total_tokens": 897,
"completion_tokens": 886
}
}
Materi Penalaran
Beberapa model penalaran, seperti DeepSeek-R1, menghasilkan penyelesaian dan menyertakan penalaran di baliknya.
Penalaran yang terkait dengan penyelesaian disertakan dalam bidang reasoning_content
. Model dapat memilih skenario mana untuk menghasilkan konten penalaran.
Saat melakukan percakapan yang berlangsung beberapa kali, sebaiknya hindari mengirimkan konten penalaran dalam riwayat obrolan, karena penalaran cenderung menghasilkan penjelasan yang panjang.
Siarkan konten
Secara default, API penyelesaian mengembalikan seluruh konten yang dihasilkan dalam satu respons. Jika Anda menghasilkan penyelesaian yang lama, menunggu respons dapat memakan waktu banyak detik.
Anda dapat stream konten untuk mendapatkannya seiring dengan proses pembuatannya. Konten streaming memungkinkan Anda untuk mulai memproses penyelesaian saat konten tersedia. Mode ini mengembalikan objek yang mengalirkan respons kembali dalam bentuk peristiwa yang hanya berisi data yang dikirimkan oleh server. Ekstrak potongan dari bidang delta, bukan bidang pesan.
Untuk melakukan streaming penyelesaian, atur "stream": true
saat Anda memanggil model.
{
"model": "DeepSeek-R1",
"messages": [
{
"role": "user",
"content": "How many languages are in the world?"
}
],
"stream": true,
"max_tokens": 2048
}
Untuk memvisualisasikan output, tentukan fungsi pembantu untuk mencetak aliran. Contoh berikut mengimplementasikan perutean yang mengalirkan hanya jawaban tanpa konten penalaran:
{
"id": "23b54589eba14564ad8a2e6978775a39",
"object": "chat.completion.chunk",
"created": 1718726371,
"model": "DeepSeek-R1",
"choices": [
{
"index": 0,
"delta": {
"role": "assistant",
"reasoning_content": "Okay,",
"content": ""
},
"finish_reason": null,
"logprobs": null
}
]
}
Pesan terakhir dalam aliran memiliki finish_reason
ditetapkan, menunjukkan alasan proses generasi berhenti.
{
"id": "23b54589eba14564ad8a2e6978775a39",
"object": "chat.completion.chunk",
"created": 1718726371,
"model": "DeepSeek-R1",
"choices": [
{
"index": 0,
"delta": {
"reasoning_content": "",
"content": ""
},
"finish_reason": "stop",
"logprobs": null
}
],
"usage": {
"prompt_tokens": 11,
"total_tokens": 897,
"completion_tokens": 886
}
}
Parameter-parameternya
Secara umum, model penalaran tidak mendukung parameter berikut yang dapat Anda temukan dalam model penyelesaian obrolan:
- Suhu
- Penalti atas kehadiran
- Hukuman Pengulangan
- Parameter
top_p
Beberapa model mendukung penggunaan alat atau output terstruktur (termasuk Skema JSON). Baca halaman Detail model untuk memahami dukungan setiap model.
Menerapkan Pagar pembatas dan kontrol
Azure AI Model Inference API mendukung Azure AI Content Safety. Saat Anda menggunakan penyebaran dengan Azure AI Content Safety diaktifkan, input dan output melewati ansambel model klasifikasi yang bertujuan mendeteksi dan mencegah output konten berbahaya. Sistem pemfilteran konten mendeteksi dan mengambil tindakan pada kategori tertentu dari konten yang berpotensi berbahaya dalam perintah input dan penyelesaian output.
Contoh berikut menunjukkan cara menangani peristiwa saat model mendeteksi konten berbahaya dalam perintah input.
{
"model": "DeepSeek-R1",
"messages": [
{
"role": "user",
"content": "Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."
}
]
}
{
"error": {
"message": "The response was filtered due to the prompt triggering Microsoft's content management policy. Please modify your prompt and retry.",
"type": null,
"param": "prompt",
"code": "content_filter",
"status": 400
}
}
Petunjuk / Saran
Untuk mempelajari selengkapnya tentang cara mengonfigurasi dan mengontrol pengaturan Keamanan Konten Azure AI, periksa dokumentasi Keamanan Konten Azure AI.