Cara membina apl character AI: senibina, kod, dan pengiraan kos

Updated 2026-07-15

Apl character AI ialah empat komponen yang disambungkan kepada endpoint sembang serasi OpenAI: prompt sistem persona, lapisan ingatan, get moderasi, dan penghala model. Anda boleh menghantar prototaip berfungsi dalam kurang daripada 200 baris Python dan menjalankannya untuk jauh di bawah satu dolar setiap pengguna aktif bulanan dengan pilihan model yang betul.

Jawapan pantas: senibina empat komponen

Anda tidak perlu melatih atau menala halus model. Setiap apl teman yang serius di pasaran hari ini, termasuk yang melayani berjuta pengguna, ialah lapisan orkestrasi nipis di atas API LLM yang dihoskan. Watak itu hidup dalam prompt dan pangkalan data, bukan dalam berat model. Selebihnya panduan ini membina setiap komponen dengan kod berfungsi terhadap endpoint standard serasi OpenAI, kemudian melalui pengiraan token supaya anda tahu berapa kos sebenar pengguna aktif bulanan sebelum anda melancarkan.

  • Prompt persona: prompt sistem berstruktur (500 hingga 1,000 token) yang mentakrifkan siapa watak itu dan bagaimana ia bercakap.
  • Ingatan: tetingkap bergolek giliran terkini ditambah ringkasan yang disegarkan secara berkala, supaya perbualan bertahan melepasi had konteks.
  • Moderasi: pengesahan umur, pengelas input, dan polisi kandungan yang sepadan dengan model yang anda halakan.
  • Penghalaan: fungsi kecil yang memilih model murah untuk sembang santai dan yang lebih kukuh untuk adegan panjang.

Komponen 1: prompt persona

Prompt persona adalah produk itu sendiri. Ia mesej sistem yang dihantar bersama setiap permintaan dan biasanya mengandungi lima bahagian: identiti (nama, umur, latar belakang), ciri personaliti, gaya percakapan dengan dua atau tiga contoh baris, peraturan tingkah laku keras (jangan sekali-kali keluar watak, kekalkan balasan di bawah had panjang), dan senario semasa. Kekalkan antara 500 dan 1,000 token. Persona lebih pendek melencong; yang jauh lebih panjang membakar bajet input pada setiap mesej dan jarang memperbaiki pematuhan. Simpan persona sebagai baris dalam pangkalan data anda supaya pengguna boleh mencipta dan mengedit watak, iaitu gelung teras produk gaya Character.AI. Berikut ialah permintaan lengkap. Bentuk yang sama berfungsi dengan mana-mana backend serasi OpenAI; contoh ini menggunakan endpoint gateway berbilang model supaya anda boleh menukar model dengan menukar satu rentetan:

curl https://api.apisrouter.com/v1/chat/completions \
  -H "Authorization: Bearer $KEAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [
      {"role": "system", "content": "You are Mira, a sarcastic starship engineer in her 30s. Personality: dry wit, fiercely loyal, hates small talk. Speech style: short technical sentences, occasional teasing. Example: \"The coupling is fried. Again. Did you touch it?\" Rules: never break character, never mention being an AI, keep replies under 120 words."},
      {"role": "user", "content": "Mira, the reactor is making that noise again."}
    ],
    "temperature": 0.9,
    "max_tokens": 300,
    "stream": true
  }'

Komponen 2: ingatan yang bertahan perbualan panjang

Sesi apl teman berjalan panjang. Tindanan ingatan tiga lapisan mengekalkan konteks koheren tanpa menghantar seluruh sejarah setiap kali: Lapisan 1 ialah tetingkap bergolek: 10 hingga 14 giliran mentah terkini, dihantar verbatim. Lapisan 2 ialah ringkasan berjalan: setiap kira-kira 20 giliran, model murah memampatkan mesej lama menjadi satu perenggan yang menjejaki nama, keadaan hubungan, dan jalan cerita terbuka. Lapisan 3 ialah fakta yang disematkan: butiran pengguna tahan lama (nama, keutamaan, peristiwa lalu yang perlu diingati watak) diekstrak ke dalam pangkalan data anda dan disuntik sebagai mesej sistem yang pendek. Ini seluruh pelaksanaan dalam Python dengan SDK OpenAI rasmi:

Bajet input sebenar setiap permintaan berada di sekitar 3,300 token.
Slot konteksSaiz tipikalKadar segar semula
Prompt sistem persona500 hingga 1,000 tokenStatik setiap watak
Fakta pengguna disematkan100 hingga 200 tokenPada peristiwa pengekstrakan
Ringkasan berjalan300 hingga 500 tokenSetiap ~20 giliran
Tetingkap bergolek (12 giliran)~1,800 hingga 2,200 tokenSetiap mesej
Mesej pengguna baharu~100 tokenSetiap mesej
from openai import OpenAI

client = OpenAI(
    api_key="sk-...",
    base_url="https://api.apisrouter.com/v1",
)

def build_context(persona, summary, pinned_facts, recent_turns, user_msg):
    facts = "\n".join(f"- {f}" for f in pinned_facts)
    return [
        {"role": "system", "content": persona},
        *([{"role": "system", "content": f"Facts to remember:\n{facts}"}]
          if pinned_facts else []),
        *([{"role": "system", "content": f"Story so far: {summary}"}]
          if summary else []),
        *recent_turns[-12:],
        {"role": "user", "content": user_msg},
    ]

def refresh_summary(old_turns, prev_summary):
    prompt = (
        "Update this running summary of a roleplay chat. Keep names, "
        "relationship state, and open plot threads. Max 150 words.\n\n"
        f"Current summary: {prev_summary}\n\nNew messages: {old_turns}"
    )
    resp = client.chat.completions.create(
        model="deepseek-v4-flash",
        messages=[{"role": "user", "content": prompt}],
        max_tokens=400,
    )
    return resp.choices[0].message.content

Komponen 3: moderasi dan polisi kandungan

Moderasi dalam apl teman mempunyai tiga tugas berbeza, dan mencampuradukkannya adalah kesilapan pelancaran paling biasa. Pertama, sekat penonton anda. Jika apl anda membenarkan tema fiksyen matang, letakkan di sebalik pengesahan umur dewasa dan kekalkan lalai semua umur yang berasingan. App Store dan Play Store kedua-duanya menyemak ini, dan pemproses pembayaran juga mengambil berat. Kedua, saring input. Jalankan pas pengelas murah ke atas mesej pengguna sebelum ia sampai ke model watak, menyekat kategori yang tiada penyedia benarkan: kandungan melibatkan kanak-kanak, bahaya dunia sebenar yang boleh dipercayai, dan arahan haram. Satu panggilan deepseek-v4-flash dengan rubrik ya/tidak berharga sebahagian kecil sen dan menambah kurang daripada satu saat kependaman. Ketiga, padankan polisi kandungan kepada model. Penyedia berbeza tentang fiksyen: polisi terbitan xAI secara jelas membenarkan tema fiksyen matang untuk pengguna dewasa, DeepSeek dan model lain terbitan berat terbuka adalah kegemaran komuniti untuk roleplay kerana polisi dihoskan mereka fleksibel untuk fiksyen, manakala polisi Anthropic melarang kandungan eksplisit, menjadikan Claude pilihan yang betul hanya untuk penulisan kreatif semua umur. Memahami polisi ini sebelum anda menghalakan trafik menyelamatkan anda daripada ribut penolakan dalam produksi. Apa sahaja yang anda bina, ia mesti menghormati terma perkhidmatan setiap penyedia yang anda panggil.

Komponen 4: penghalaan model dan matriks pemilihan

Kebanyakan mesej dalam apl teman ialah giliran santai pendek yang ditangani model berbajet dengan sempurna. Sebahagian kecil ialah adegan emosi panjang atau set kreatif di mana kualiti prosa adalah produk itu. Penghalaan mengikut kedalaman adegan memotong kos secara drastik tanpa disedari pengguna:

Padankan setiap laluan dengan model yang polisi kandungannya sesuai dengan penonton yang dilayaninya.
ModelID model APIKadar setiap 1M token (masuk/keluar)Kesesuaian apl teman
DeepSeek V4 Flashdeepseek-v4-flash$0.126 / $0.252Model sembang lalai. Kegemaran komuniti untuk roleplay, nilai terbaik dalam katalog.
DeepSeek V4 Prodeepseek-v4-pro$0.3915 / $0.783Adegan lebih panjang, pematuhan arahan lebih kukuh, masih murah.
GLM-5glm-5$0.514 / $2.314Pilihan nilai dengan penulisan kreatif yang kukuh.
Kimi K2.6kimi-k2.6Lihat /pricingPilihan nilai untuk sesi konteks panjang. MiMo ialah pilihan bajet yang serupa.
grok-4.5grok-4.5$1.60 / $4.80Tema fiksyen matang untuk pengguna dewasa mengikut polisi rasmi xAI. Tetingkap konteks 500K.
Claude Sonnet 4.6claude-sonnet-4-6$2.40 / $12.00Kualiti prosa tertinggi. Penulisan kreatif semua umur sahaja; Anthropic melarang kandungan eksplisit.
Gemini 3.5 Flashgemini-3.5-flash$1.20 / $7.20Pantas, baik untuk ciri sedar imej seperti reaksi avatar.
ROUTES = {
    "casual": "deepseek-v4-flash",
    "scene": "deepseek-v4-pro",
    "prose": "claude-sonnet-4-6",  # hanya penulisan kreatif semua umur
}

def pick_model(user_msg: str, turns_in_scene: int) -> str:
    if turns_in_scene > 6 or len(user_msg) > 400:
        return ROUTES["scene"]
    return ROUTES["casual"]

Berapa kos sebenar seorang pengguna aktif bulanan

Pengiraan token sebelum pelancaran mengalahkan kejutan bil selepas itu. Menggunakan bajet konteks daripada jadual ingatan: kira-kira 3,300 token input dan 250 token output setiap mesej. Pengguna apl teman adalah berat; angka yang dilaporkan komuniti meletakkan pengguna terlibat pada berpuluh-puluh mesej sehari, jadi anggap kira-kira 40 mesej sehari sepanjang 20 hari aktif, atau kira-kira 800 mesej setiap MAU setiap bulan. Itu memberikan 2.64M token input dan 0.2M token output setiap MAU setiap bulan. Mendarab dengan kadar katalog:

Mengandaikan 3,300 token input + 250 token output setiap mesej, ~800 mesej setiap MAU setiap bulan.
ModelKos input / MAUKos output / MAUJumlah / MAU / bulan
deepseek-v4-flash$0.33$0.05$0.38
deepseek-v4-pro$1.03$0.16$1.19
glm-5$1.36$0.46$1.82
gemini-3.5-flash$3.17$1.44$4.61
grok-4.5$4.22$0.96$5.18
claude-sonnet-4-6$6.34$2.40$8.74
gpt-5.5$10.56$4.80$15.36

Satu endpoint untuk setiap model dalam matriks

Mendaftar lima akaun penyedia untuk menjalankan satu penghala adalah overhed sebenar: lima kunci, lima papan pemuka pengebilan, lima set had kadar. Gateway berbilang model meruntuhkan itu. APIsRouter mendedahkan setiap model di atas melalui satu URL asas serasi OpenAI https://api.apisrouter.com/v1, jadi cebisan penghala berfungsi seadanya dengan hanya menukar rentetan model. Pengebilan adalah bayar-mengikut-penggunaan tanpa langganan, model global berjalan 20% di bawah harga rasmi dengan model Cina di bawah kadar rasmi, dan checkout tanpa daftar di /topup menghantar kunci ke e-mel anda selepas pembayaran, dengan top up pertama menambah +100% baki. GET /v1/models dengan kunci anda memulangkan senarai model langsung, yang juga berguna untuk mengisi pemilih model dalam UI admin anda sendiri.

Petua produksi yang menjimatkan wang dan kesakitan sebenar

  • Strim segala-galanya. Masa-ke-token-pertama adalah metrik yang dirasai pengguna; balasan yang distrim pada 2 saat terasa lebih pantas daripada balasan lengkap pada 4 saat.
  • Kekalkan prefix stabil tetap stabil. Persona dan fakta disematkan harus sama byte demi byte merentas permintaan supaya backend yang menyokong caching prefix boleh mengeksploitasinya.
  • Hadkan max_tokens setiap laluan. Giliran santai jarang memerlukan lebih daripada 300 token output; model tanpa had yang merepek menggandakan bil output anda.
  • Log kos setiap pengguna, bukan hanya setiap permintaan. Sebahagian kecil pengguna berat akan mendominasi perbelanjaan; anda perlu melihat mereka untuk mereka bentuk tahap penggunaan yang adil.
  • Bina fallback ke dalam penghala. Jika model utama tamat masa atau menolak, cuba semula sekali pada model sebelah sebelum memaparkan ralat.
  • Potong tetingkap bergolek mengikut token, bukan giliran, supaya satu tampalan panjang tidak meletupkan bajet.
  • Kendalikan penolakan dalam watak. Petakan penolakan kepada pengalihan dalam cerita yang lancar dan bukan memaparkan teks API mentah.
  • Jangan simpan sembang mentah lebih lama daripada perlu, dan nyatakan begitu dalam polisi privasi anda. Log sembang teman adalah sensitif secara semula jadi.

Soalan lazim

Berapa kos untuk membina apl character AI?

Kos pembangunan kebanyakannya masa anda: prototaip berfungsi ialah projek hujung minggu kerana tiada latihan model terlibat. Kos operasi adalah angka sebenar, dan ia berskala dengan penggunaan. Pada model berbajet seperti deepseek-v4-flash, pengguna aktif bulanan yang berat berharga kira-kira $0.38 dalam token; pada model premium seperti gpt-5.5 pengguna yang sama berharga kira-kira $15. Pilihan model, bukan infrastruktur, menentukan margin anda.

Model AI mana yang terbaik untuk apl character AI?

Keluarga DeepSeek V4 ialah kegemaran komuniti untuk roleplay dan nilai terbaik: Flash untuk sembang santai, Pro untuk adegan lebih panjang. GLM-5, Kimi K2.6, dan MiMo adalah pilihan nilai yang kukuh. Grok sesuai untuk apl yang melayani tema fiksyen matang kepada dewasa, mengikut polisi rasmi xAI. Claude Sonnet 4.6 menulis prosa terbaik tetapi hanya sesuai untuk penulisan kreatif semua umur kerana Anthropic melarang kandungan eksplisit.

Bagaimana apl character AI mengingati perbualan lalu?

Melalui kejuruteraan prompt, bukan ingatan model. Apl menghantar semula tetingkap bergolek mesej terkini, ringkasan mesej lama yang dimampatkan secara berkala, dan senarai pendek fakta disematkan yang diekstrak ke pangkalan data. Model itu sendiri tidak berkeadaan; setiap permintaan mengandungi segala-galanya yang "diingati" watak.

Perlukah saya melatih model saya sendiri untuk membina apl teman AI?

Tidak. Penalaan halus mahal, perlahan untuk berulang, dan tidak perlu untuk konsistensi watak. Prompt persona berstruktur baik 500 hingga 1,000 token ditambah lapisan ingatan mencapai pematuhan watak yang tidak dapat dibezakan oleh pengguna daripada model tersuai, dan membolehkan anda menukar model asas secara bebas apabila yang lebih baik dilancarkan.

Bagaimana saya mengendalikan kandungan matang dalam apl teman?

Anggap ia sebagai masalah pemadanan polisi. Letakkan tema fiksyen matang di sebalik pengesahan umur dewasa, saring input untuk kategori yang tiada penyedia benarkan, dan halakan trafik itu hanya kepada model yang polisi terbitannya membenarkan fiksyen untuk dewasa, seperti Grok di bawah polisi xAI. Kekalkan trek lalai semua umur pada model lebih ketat, dan patuhi terma perkhidmatan setiap penyedia.

Bolehkah saya guna SDK OpenAI untuk apl character AI dengan model lain?

Ya. DeepSeek, GLM, Kimi, Gemini, Claude, dan Grok semuanya boleh dicapai melalui endpoint serasi OpenAI, sama ada daripada vendor mereka atau melalui gateway. Kod apl anda kekal pada antara muka chat.completions standard dan menukar model dengan menukar rentetan model, iaitu tepat apa yang menjadikan penghalaan setiap mesej murah untuk dibina.