
deepseek-recipe nima?
deepseek-recipe — API xizmatlarini DeepSeek inference backendlariga ulash uchun Rust kutubxonalari va Python bindinglaridan iborat to‘plam. U qo‘llab-quvvatlanadigan API formatlaridagi so‘rovlarni umumiy Conversation ko‘rinishiga aylantiradi, bu suhbatlarni DeepSeek V4 yoki V4.1 promptlari sifatida shakllantiradi va model chiqishini tegishli javob formatiga qaytaradi.
Loyiha to‘liq inference serveri emas, balki protokol va promptlarni qayta ishlash qatlamidir. Model inferensiyasi, HTTP transporti va vositalar ishga tushirilishini alohida ta’minlashingiz kerak.
Qayta ishlash quvuri qanday ishlaydi
- Messages, Chat Completions yoki Responses formatidagi so‘rovni qabul qiladi.
- So‘rovni kutubxonaning umumiy Conversation formatiga aylantiradi.
- Suhbatni DeepSeek V4 yoki V4.1 prompti sifatida shakllantiradi yoki token IDlariga kodlaydi.
- Prompt yoki token IDlarini tashqi inference backendiga yuboradi.
- Yaratilgan chiqishni, jumladan qo‘llab-quvvatlanadigan fikrlash mazmuni, vosita chaqiruvlari, JSON obyektlari va to‘xtash ketma-ketliklarini tahlil qiladi.
- Mijoz kutgan formatda to‘liq yoki oqimli javob qaytaradi.
deepseek-recipe modelni ishga tushirmaydi, vositalarni bajarmaydi va mustaqil ravishda HTTP xizmatini taqdim etmaydi. Rust va Python serverlarining namunalari integratsiya uchun qo‘llanma sifatida repositoryda mavjud.
Asosiy imkoniyatlar
- Yagona protokol konversiyasi: Messages, Chat Completions va Responses so‘rovlari hamda javoblarini qayta ishlaydi.
- DeepSeek promptlarini kodlash: DeepSeek V4 va V4.1 suhbatlarini prompt yoki token IDlari sifatida shakllantiradi.
- Oqimli va to‘liq javoblar: Har ikki javob uslubini konversiya qilishni qo‘llab-quvvatlaydi.
- Generatsiya sozlamalari: Fikrlash rejimi, reasoning effort,
temperature,top_pva chiqish tokenlari limitlarini uzatadi. - Chiqishni tahlil qilish: Fikrlash mazmuni, mijoz vositalari chaqiruvlari, JSON obyektlari chiqishi va to‘xtash ketma-ketliklarini taniydi.
- Multimodal kiritish: Base64 ma’lumotlari yoki tashqi URL sifatida berilgan rasmlarni qabul qiladi. Image paketi OpenCV yordamida DeepSeek V4.1 uchun oldindan qayta ishlashni taqdim etadi.
- Vosita ta’riflari: Funksiya vositalarini qo‘llab-quvvatlaydi. Responses API qo‘shimcha ravishda vosita namespace’lari va maxsus
apply_patchvositasini qo‘llab-quvvatlaydi.
Python o‘rnatish va sozlash
Talablar
Python bindinglari uchun Python 3.10 yoki undan yangiroq versiya talab qilinadi. Nashr qilingan paketni pip orqali o‘rnating:
python3 -m pip install deepseek-recipe
O‘rnatilgan modul deepseek_recipe sifatida import qilinadi.
Chat Completions so‘rovini konversiya qilish
Quyidagi misol Chat Completions so‘rovini yaratadi, uni umumiy Conversation ko‘rinishiga aylantiradi va suhbatni DeepSeek V4.1 prompti sifatida shakllantiradi:
from deepseek_recipe import (
ChatCompletionRequest,
ConversionOptions,
DeepseekV41Encoding,
)
request = ChatCompletionRequest({
"model": "deepseek-flash",
"messages": [
{"role": "user", "content": "Hello"}
],
})
converted = request.convert(ConversionOptions())
rendered = DeepseekV41Encoding().render_conversation(
converted.conversation
)
print(rendered.prompt)
Har bir bosqichni tushunish
ChatCompletionRequestkiruvchi Chat Completions ma’lumotlarini o‘qiydi.request.convert(ConversionOptions())so‘rovni Conversation formatiga me’yorlashtiradi.DeepseekV41Encoding()DeepSeek V4.1 kodlash qoidalarini tanlaydi.render_conversationmodel uchun tayyor ko‘rinishni yaratadi.rendered.prompttashqi inference backendiga yuboriladigan promptni o‘z ichiga oladi.
Inferensiyadan so‘ng yaratilgan model chiqishini mijoz talab qiladigan API formatiga o‘girish uchun loyiha taqdim etgan javob konversiyasi va chiqishni tahlil qilish komponentlaridan foydalaning. Aniq integratsiya backend to‘liq chiqishni qaytarishi yoki yaratilgan ma’lumotlarni oqim tarzida yuborishiga bog‘liq.
Rust o‘rnatish va sozlash
Crate’larni qo‘shish
Rust loyihasiga protokol konversiyasi va kodlash crate’larini qo‘shing:
cargo add deepseek-recipe@0.1 deepseek-recipe-encoding@0.1
Agar manba kodidan build qilayotgan yoki rasmlarga ishlov berishni yoqayotgan bo‘lsangiz, build ko‘rsatmalari va tasviriy bog‘liqliklar uchun repositoryning rivojlantirish qo‘llanmasiga murojaat qiling.
DeepSeek V4.1 promptini shakllantirish
use deepseek_recipe::openai::ChatCompletionRequest;
use deepseek_recipe::request::{ConversionOptions, ProtocolRequest};
use deepseek_recipe_encoding::PromptEncoding;
use deepseek_recipe_encoding::v4::dsv41::DeepseekV41Encoding;
use serde_json::json;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let request: ChatCompletionRequest = serde_json::from_value(json!({
"model": "deepseek-flash",
"messages": [
{"role": "user", "content": "Hello"}
],
}))?;
let converted = request.convert(ConversionOptions::default())?;
let rendered = DeepseekV41Encoding::new()
.render_conversation(&converted.conversation);
println!("{}", rendered.prompt);
Ok(())
}
Bu yerda Serde JSONni ChatCompletionRequest obyektiga deserializatsiya qiladi. ProtocolRequest trait’i so‘rov konversiyasini, PromptEncoding esa suhbatni shakllantirishni ta’minlaydi. Natijada hosil bo‘lgan prompt alohida boshqariladigan inference engine’iga uzatilishi mumkin.
Kodlash va dekodlash demosini ko‘rish
Repository promptlarni shakllantirish, maxsus tokenlarni tekshirish va to‘liq model chiqishini Chat Completions, Responses yoki Messages formatlariga dekodlash uchun web-interfeysni o‘z ichiga oladi.
Repository ildiz katalogidan quyidagini ishga tushiring:
cargo run -p encoding-decoding-demo --locked
So‘ng brauzerda http://127.0.0.1:7778 manzilini oching.
Ushbu demo kutubxonalarni serverga integratsiya qilishdan oldin prompt tuzilmasini tekshirish va yaratilgan chiqish qo‘llab-quvvatlanadigan API javob formatlariga qanday mos kelishini tushunish uchun foydalidir.
Paketlar haqida
deepseek-recipe: Protokollarni o‘zgartirish va model chiqishini tahlil qilish.deepseek-recipe-core: Suhbat, xabar, rasm va vosita turlari uchun umumiy komponentlar.deepseek-recipe-encoding: DeepSeek V4 va V4.1 promptlarini render qilish va tokenlarni kodlash.deepseek-recipe-image: Rasmlarni yuklab olish va dastlabki qayta ishlash.deepseek-recipe-python:deepseek_recipeimporti orqali taqdim etiladigan Python bog‘lamalari.encoding-decoding-demo: Brauzerda prompt va chiqishni tekshirish.server-rs: Mock inference’dan foydalanadigan Axum API namunasi.server-py: Mock inference’dan foydalanadigan FastAPI namunasi.
Kengaytirilgan integratsiya bo‘yicha maslahatlar
Protokolni qayta ishlashni inference’dan alohida saqlang
Ilovangiz chegaralarida deepseek-recipe’dan foydalaning. Inference’dan oldin kiruvchi so‘rovlarni o‘zgartiring va undan keyin yaratilgan chiqishni tahlil qiling. Modelni yuklash, batchlarga ajratish, rejalashtirish va qurilmalarni boshqarishni inference backend’ida saqlang.
Prompt yoki token ID’larini ongli ravishda tanlang
Suhbatlarni matn promptlari sifatida render qilishingiz yoki ularni token ID’lariga kodlashingiz mumkin. Backend’ingiz formatlangan matnni qabul qilsa, prompt rendering’dan foydalaning. Backend’ingiz to‘g‘ridan-to‘g‘ri tokenizer ID’lari bilan ishlasa, token kodlashdan foydalaning. Repozitoriyning tokenizer qo‘llanmasi suhbatlarni kodlash va backend token ID’larini dekodlashni tushuntiradi.
Streaming’ni boshidan oxirigacha ishlaydigan funksiya sifatida rejalashtiring
Rust va Python model chiqishini streaming javoblariga o‘zgartirishni qo‘llab-quvvatlaydi. Transport va inference backend’ingiz ham ma’lumotlarni streaming tarzida uzatishi kerak; kutubxona bu qatlamlarni taqdim etmaydi. Modelning bosqichma-bosqich chiqishini mijozga taqdim etiladigan API’ga ulashda streaming javoblari qo‘llanmasiga amal qiling.
Inference’dan oldin rasmlarni qayta ishlang
So‘rovlar rasmlarga base64 kontenti yoki tashqi URL’lar orqali murojaat qilishi mumkin. Maxsus rasm komponenti rasmlarni yuklab olish va OpenCV yordamida DeepSeek V4.1 uchun dastlabki qayta ishlashni qo‘llab-quvvatlaydi. Manbadan build qilayotganda kerakli rasm bog‘liqliklari o‘rnatilganiga ishonch hosil qiling.
Vositalarni ishga tushirishni kutubxonadan tashqarida bajaring
Loyiha vosita ta’riflarini ifodalashi va mijoz yuborgan vosita chaqiruvlarini tahlil qilishi mumkin, ammo bu vositalarni ishga tushirmaydi. Ilovangiz har bir chaqiruvni tekshirishi, tegishli funksiya yoki maxsus vositani ishga tushirishi va natijani suhbatning keyingi navbatiga qo‘shishi kerak.
Joriy chegaralarni hisobga oling
Loyiha asosida API loyihalashdan oldin hali qo‘llab-quvvatlanmaydigan funksiyalarni hisobga oling:
logprobsyokitop_logprobsorqali token ehtimollari.- Hujjat kontenti, audio yoki video kiritish va
file_idorqali qidirish. - Server tomonidan bajariladigan
web_searchkabi vositalar. - JSON Schema va muntazam ifodaga asoslangan chiqish cheklovlari.
- Vositalarning
strictsozlamalarini majburiy qo‘llash. n > 1bo‘lganda bir nechta Chat Completions tanlovi.apply_patchdan boshqa Responses maxsus vosita ta’riflari.- Responses suhbatlarini saqlash yoki
previous_response_idorqali kontekstni olish. encrypted_contentorqali shifrlangan fikrlash kontenti.
Xulosa
deepseek-recipe bir nechta API protokollarini me’yorlashtirish, DeepSeek V4 va V4.1 uchun kiritish ma’lumotlarini yaratish hamda yaratilgan chiqishni mijozga taqdim etiladigan javoblarga o‘girish uchun qayta foydalaniladigan Rust va Python komponentlarini taqdim etadi. Oddiy so‘rovni o‘zgartirish namunasidan boshlang, demo orqali xatti-harakatni tekshiring, so‘ng o‘zgartirish pipeline’ini o‘zingizning inference, transport va vositalarni ishga tushirish infratuzilmangizga ulang.
Loyiha kodi va ochiq hujjatlar MIT litsenziyasi ostida mavjud.
