Skip to main content
Model khusus

Kemampuan kode (Qwen-Coder)

Qwen-Coder adalah model bahasa yang dirancang untuk tugas-tugas pemrograman. Anda dapat menggunakan API-nya untuk menghasilkan kode, melengkapi kode, serta memanggil tool guna berinteraksi dengan sistem eksternal.

Kami menyarankan menggunakan model tujuan umum terbaru alih-alih model Qwen-Coder. Untuk informasi lebih lanjut, lihat Pembuatan teks guna memilih model yang sesuai dengan skenario Anda.

Mulai

Sebelum memulai, dapatkan Kunci API dan konfigurasikan sebagai Variabel lingkungan. Jika Anda menggunakan kit pengembangan perangkat lunak (SDK), Anda harus menginstal SDK OpenAI atau DashScope. Contoh berikut menunjukkan cara memanggil model qwen3-coder-next untuk menulis fungsi Python yang mencari bilangan prima.
  • OpenAI compatible-Chat Completions API
  • DashScope
  • Python
  • Node.js
  • curl
Contoh permintaan
import os
from openai import OpenAI

client = OpenAI(
    # Kunci API bervariasi berdasarkan Wilayah. Untuk mendapatkan Kunci API, kunjungi: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Alibaba Cloud Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen3-coder-next",
    messages=[
        {'role': 'system', 'content': 'You are a helpful assistant.'},
        {'role': 'user', 'content': 'Write a Python function named find_prime_numbers that takes an integer n as a parameter and returns a list of all prime numbers less than n. Do not output non-code content or Markdown code blocks.'}],
)
print(completion.choices[0].message.content)
Response
def find_prime_numbers(n):
    if n <= 2:
        return []

    primes = []
    for num in range(2, n):
        is_prime = True
        for i in range(2, int(num ** 0.5) + 1):
            if num % i == 0:
                is_prime = False
                break
        if is_prime:
            primes.append(num)

    return primes

Kemampuan inti

Pemanggilan tool

Berikan model sekumpulan tool untuk berinteraksi dengan lingkungan eksternal, seperti membaca dan menulis file, memanggil API, atau mengoperasikan database. Model menentukan apakah dan bagaimana memanggil tool ini berdasarkan instruksi Anda. Untuk informasi lebih lanjut, lihat Function Calling. Alur lengkap pemanggilan tool mencakup:
  1. Definisikan tool dan kirim permintaan: Definisikan daftar tool dalam permintaan dan instruksikan model untuk menyelesaikan tugas yang memerlukan tool tersebut.
  2. Jalankan tool: Urai tool_calls yang dikembalikan oleh model dan panggil fungsi tool lokal yang sesuai untuk menjalankan tugas.
  3. Kembalikan hasil eksekusi: Bungkus hasil eksekusi tool ke dalam format tertentu dan kirim kembali ke model. Model menggunakan hasil ini untuk menyelesaikan tugas akhir.
Contoh berikut menunjukkan cara mengarahkan model untuk menghasilkan kode dan menggunakan tool write_file untuk menyimpannya ke file lokal.
  • OpenAI compatible-Chat Completions API
  • DashScope
  • Python
  • Node.js
  • curl
import os
import json
from openai import OpenAI

client = OpenAI(
    # Kunci API bervariasi berdasarkan Wilayah. Untuk mendapatkan Kunci API, kunjungi: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Alibaba Cloud Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

tools = [
    {
        "type": "function",
        "function": {
            "name": "write_file",
            "description": "Writes content to a specified file. Creates the file if it does not exist.",
            "parameters": {
                "type": "object",
                "properties": {
                    "path": {
                        "type": "string",
                        "description": "The relative or absolute path of the object file."
                    },
                    "content": {
                        "type": "string",
                        "description": "The string content to write to the file."
                    }
                },
                "required": ["path", "content"]
            }
        }
    }
]

# Implementasikan fungsi tool
def write_file(path: str, content: str) -> str:
    """Menulis konten ke file."""
    try:
        # Pastikan direktori ada
        os.makedirs(os.path.dirname(path),
                    exist_ok=True) if os.path.dirname(path) else None
        with open(path, 'w', encoding='utf-8') as f:
            f.write(content)
        return f"Success: The file '{path}' has been written."
    except Exception as e:
        return f"Error: An exception occurred while writing the file - {str(e)}"

messages = [{"role": "user", "content": "Write a Python quicksort algorithm and name the file quick_sort.py."}]

completion = client.chat.completions.create(
    model="qwen3-coder-next",
    messages=messages,
    tools=tools
)

assistant_output = completion.choices[0].message
if assistant_output.content is None:
    assistant_output.content = ""
messages.append(assistant_output)

# Jika tidak diperlukan pemanggilan tool, cetak langsung kontennya
if assistant_output.tool_calls is None:
    print(f"Tidak diperlukan pemanggilan tool. Respons langsung: {assistant_output.content}")
else:
    # Masuk ke loop pemanggilan tool
    while assistant_output.tool_calls is not None:
        for tool_call in assistant_output.tool_calls:
            tool_call_id = tool_call.id
            func_name = tool_call.function.name
            arguments = json.loads(tool_call.function.arguments)
            print(f"Memanggil tool [{func_name}] dengan argumen: {arguments}")
            # Jalankan tool
            tool_result = write_file(**arguments)
            # Buat pesan balasan tool
            tool_message = {
                "role": "tool",
                "tool_call_id": tool_call_id,
                "content": tool_result,
            }
            print(f"Tool mengembalikan: {tool_message['content']}")
            messages.append(tool_message)
        # Panggil model lagi untuk mendapatkan respons bahasa alami yang dirangkum
        response = client.chat.completions.create(
            model="qwen3-coder-next",
            messages=messages,
            tools=tools
        )
        assistant_output = response.choices[0].message
        if assistant_output.content is None:
            assistant_output.content = ""
        messages.append(assistant_output)
    print(f"Respons akhir model: {assistant_output.content}")
Response
Calling tool [write_file] with arguments: {'content': 'def quick_sort(arr):\\n    if len(arr) <= 1:\\n        return arr\\n    pivot = arr[len(arr) // 2]\\n    left = [x for x in arr if x < pivot]\\n    middle = [x for x in arr if x == pivot]\\n    right = [x for x in arr if x > pivot]\\n    return quick_sort(left) + middle + quick_sort(right)\\n\\nif __name__ == \\"__main__\\":\\n    example_list = [3, 6, 8, 10, 1, 2, 1]\\n    print(\\"Original list:\\", example_list)\\n    sorted_list = quick_sort(example_list)\\n    print(\\"Sorted list:\\", sorted_list)', 'path': 'quick_sort.py'}
Tool returned: Success: The file 'quick_sort.py' has been written.
Final model response: I have created a file named `quick_sort.py` for you, which contains the Python implementation of the quicksort algorithm. You can run this file to see the example output. Let me know if you need any further modifications or explanations!

Penyelesaian kode

Qwen-Coder mendukung dua metode penyelesaian kode. Pilih salah satu sesuai kebutuhan Anda:
  • Mode parsial: Metode ini cocok untuk semua model Qwen-Coder dan wilayah. Metode ini mendukung penyelesaian awalan (prefix completion) dan mudah diimplementasikan. Kami merekomendasikan metode ini.
  • Completions API: Metode ini hanya didukung untuk model seri qwen2.5-coder di wilayah China (Beijing). Metode ini mendukung penyelesaian awalan dan penyelesaian isi tengah (fill-in-the-middle).

Mode Parsial

Fitur ini memungkinkan model secara otomatis melengkapi sisa kode Anda berdasarkan awalan yang diberikan. Untuk menggunakan fitur ini, tambahkan pesan dengan role diatur ke assistant dan partial: true ke daftar messages. content dari pesan assistant adalah awalan kode yang Anda berikan. Untuk informasi lebih lanjut, lihat Mode parsial.
  • OpenAI compatible
  • DashScope
  • Python
  • Node.js
  • curl
Permintaan
import os
from openai import OpenAI

client = OpenAI(
    # Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Alibaba Cloud Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen3-coder-next",
    messages=[{
        "role": "user",
        "content": "Help me write a Python script to generate prime numbers up to 100. Do not output non-code content or Markdown code blocks."
    },
    {
        "role": "assistant",
        "content": "def generate_prime_number",
        "partial": True
    }]
    )
print(completion.choices[0].message.content)
Response
(n):
    primes = []
    for i in range(2, n+1):
        is_prime = True
        for j in range(2, int(i**0.5)+1):
            if i % j == 0:
                is_prime = False
                break
        if is_prime:
            primes.append(i)
    return primes

prime_numbers = generate_prime_number(100)
print(prime_numbers)

Completions API

Completions API hanya tersedia untuk model di wilayah China (Beijing) dan memerlukan Kunci API dari wilayah China (Beijing).
Model yang didukung: qwen-coder-turbo Completions API menggunakan tag khusus fim (Fill-in-the-Middle) dalam prompt untuk memandu penyelesaian model.
  • Penyelesaian berbasis awalan
  • Penyelesaian berbasis awalan dan akhiran
Templat prompt:
<|fim_prefix|>{prefix_content}<|fim_suffix|>
  • <|fim_prefix|> dan <|fim_suffix|> adalah token khusus yang memandu model untuk melengkapi teks. Jangan ubah token ini.
  • Ganti {prefix_content} dengan informasi awalan Anda, seperti nama fungsi, parameter input, dan instruksi penggunaan.
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
    api_key=os.getenv("DASHSCOPE_API_KEY")
)

completion = client.completions.create(
  model="qwen-coder-turbo",
  prompt="<|fim_prefix|>def quick_sort(arr):<|fim_suffix|>",
)

print(completion.choices[0].text)

Produksi

Untuk mengoptimalkan efisiensi dan mengurangi biaya penggunaan model Qwen-Coder, pertimbangkan saran berikut:
  • Aktifkankeluaran streaming: Atur stream=True untuk menerima hasil antara secara real time. Hal ini mengurangi risiko timeout dan meningkatkan pengalaman pengguna.
  • Turunkan suhu: Tugas pembuatan kode biasanya memerlukan hasil yang deterministik dan akurat. Menurunkan parameter suhu mengurangi keacakan output yang dihasilkan.
  • Gunakan model yang mendukung cache konteks: Dalam skenario dengan banyak awalan berulang, seperti penyelesaian kode dan tinjauan kode, menggunakan model yang mendukung cache konteks dapat secara efektif mengurangi overhead.
  • Kontrol jumlah tool: Untuk memastikan pemanggilan model yang efisien dan hemat biaya, jangan melewatkan lebih dari 20 tool dalam parameter tools per panggilan. Melewatkan banyak deskripsi tool mengonsumsi token input berlebihan, yang meningkatkan biaya, mengurangi kecepatan respons, dan membuat model lebih sulit memilih tool yang tepat. Untuk informasi lebih lanjut, lihat Function Calling.

Penagihan dan Pembatasan laju

  • Penagihan dasar: Anda ditagih berdasarkan jumlah token input token dan token output token untuk setiap permintaan. Harga satuan bervariasi tergantung model. Untuk harga spesifik, lihat Daftar model.
  • Item penagihan khusus:
    • Penagihan bertingkat: Model seri qwen3-coder menggunakan metode penagihan bertingkat. Ketika jumlah token input dalam permintaan tunggal mencapai tingkat tertentu, semua token input dan output untuk permintaan tersebut ditagih sesuai tarif tingkat tersebut.
    • Cache konteks: Untuk model yang mendukung cache konteks, mekanisme caching dapat secara signifikan mengurangi biaya untuk permintaan dengan banyak input berulang, seperti dalam tinjauan kode. Teks input yang mengenai cache implisit ditagih sebesar 20% dari tarif standar. Teks input yang mengenai cache eksplisit ditagih sebesar 10% dari tarif standar. Untuk informasi lebih lanjut, lihat Cache konteks.
    • Pemanggilan tool (Function Calling): Saat Anda menggunakan fitur pemanggilan tool, deskripsi tool yang Anda definisikan dalam parameter tools termasuk dalam jumlah total token dan dikenakan biaya.
  • Pembatasan laju: Panggilan API dikenakan batas ganda berdasarkan permintaan per menit (RPM) dan token per menit (TPM). Untuk informasi lebih lanjut, lihat Pembatasan laju.
  • Kuota gratis(hanya wilayah Singapura): Setelah Anda mengaktifkan Model Studio atau permintaan model Anda disetujui, setiap model Qwen-Coder mencakup kuota gratis 1 juta token untuk pengguna baru yang berlaku selama 90 hari.

Referensi API

Untuk informasi lebih lanjut tentang parameter input dan output model Qwen-Coder, lihat Pembuatan teks.

FAQ

Mengapa tool pengembangan seperti Qwen Code dan Claude Code mengonsumsi banyak token?

Saat Anda menggunakan tool pengembangan eksternal untuk memanggil model Qwen-Coder, tool tersebut mungkin melakukan beberapa panggilan API, yang mengonsumsi banyak token. Untuk metode spesifik memantau dan mengurangi konsumsi token, lihat dokumen Qwen Code dan Claude Code. Anda dapat mengaktifkan fitur stop-when-quota-exhausted untuk menghindari biaya tambahan setelah kuota gratis Anda habis. Anda juga dapat membeli paket coding AI. Paket ini menawarkan biaya tetap bulanan untuk kuota permintaan bulanan yang dapat digunakan dalam tool AI. Untuk informasi lebih lanjut, lihat dokumen Ikhtisar Paket Coding.

Bagaimana cara melihat penggunaan model?

Satu jam setelah Anda memanggil model, buka halaman Pemantauan (Singapura atau Beijing). Atur kondisi kueri, seperti rentang waktu dan ruang kerja. Kemudian, di area Model, temukan model target dan klik Pantau di kolom Tindakan untuk melihat statistik pemanggilan model. Untuk informasi lebih lanjut, lihat dokumen Pemantauan.
Data diperbarui setiap jam. Selama periode puncak, mungkin terjadi latensi hingga satu jam.
image

Bagaimana cara membuat model hanya mengeluarkan kode tanpa teks penjelasan apa pun?

Anda dapat menggunakan metode berikut:
  1. Batasan prompt: Berikan instruksi yang jelas dalam prompt, misalnya: "Kembalikan hanya kode. Jangan sertakan penjelasan, komentar, atau tag Markdown apa pun."
  2. Atur urutan stop : Gunakan frasa seperti stop=["\n# Explanation:", "Note:"] untuk menghentikan generasi sebelum model mulai menghasilkan teks penjelasan. Untuk informasi lebih lanjut, lihat Referensi API Qwen.
Rencana Token (Team Edition)
Statistik dan Pemantauan
Asset Center
Dukungan layanan