TH ▾

API Qwen Abliterated: เรียกโมเดลแบบโฮสต์ ไม่ต้องใช้ GPU

ภาพประกอบแล็ปท็อปส่งข้อมูลแบบลูกบาศก์ผ่านสายเคเบิลไปยังเซิร์ฟเวอร์โมเดลที่โฮสต์ไว้

อัปเดตล่าสุด

คุณสามารถเรียกใช้โมเดลแชทแบบไม่เซ็นเซอร์ผ่าน HTTP ด้วย OpenAI SDK ที่มีอยู่แล้ว และไม่ต้องดาวน์โหลดน้ำหนักโมเดลหรือเช่า GPU คู่มือนี้แสดงการตั้งค่า พร้อมโค้ดที่ใช้งานได้และค่าใช้จ่ายที่ชัดเจน

ประเด็นสำคัญ

  • กำหนดค่า OpenAI SDK ใดๆ ให้ชี้ไปยัง URL พื้นฐาน และตั้งค่าโมเดลเป็น uncensored
  • สตรีมมิง การเรียกใช้ฟังก์ชัน และโหมด JSON ทำงานผ่านพารามิเตอร์มาตรฐาน
  • ขีดจำกัด: คำขอพร้อมกัน 8 คำขอ และ 300 คำขอต่อนาทีบนคีย์เต็ม
  • จ่ายต่อโทเคน: $0.15 ต่อ 1M อินพุต, $0.50 ต่อ 1M เอาต์พุต

คำตอบสั้นๆ: เปลี่ยน base URL

หากคุณกำลังมองหา qwen abliterated api วิธีปฏิบัติที่ลงมือได้จริงคือการใช้เอนด์พอยต์แบบโฮสต์ที่รองรับโปรโตคอล OpenAI คุณเก็บโค้ดไคลเอนต์ไว้ เปลี่ยนค่าสองค่า แล้วส่งคำขอไปยังเซิร์ฟเวอร์ที่รันโมเดลให้ ไม่ต้องดาวน์โหลด GGUF ไม่ต้องเลือกการควอนไทซ์ ไม่ต้องกังวลเรื่องงบประมาณ VRAM

หมายเหตุจำเป็นเกี่ยวกับการตั้งชื่อ: นี่คือบริการอิสระ ไม่ใช่ API Qwen ทางการ และโมเดลที่โฮสต์ไว้จะระบุชื่อเป็น uncensored ไม่ใช่ชื่อไฟล์ checkpoint ของ Qwen นี่คือโมเดลแบบเปิดน้ำหนักหนึ่งตัวที่ให้บริการโดยผู้ให้บริการอิสระและปรับแต่งให้ตอบโดยไม่ปฏิเสธเนื้อหาสำหรับการใช้งานผู้ใหญ่ที่ถูกต้องตามกฎหมาย หากคุณต้องการไฟล์ abliterated เฉพาะ ให้รันไฟล์นั้นในเครื่อง หากคุณต้องการเอนด์พอยต์แชทที่เชื่อถือได้สำหรับแอปพลิเคชัน โปรดอ่านต่อ

การตั้งค่าค่า
URL พื้นฐานhttps://api.qwenabliterated.top/v1
โมเดลuncensored
Auth headerAuthorization: Bearer YOUR_API_KEY
เอนด์พอยต์POST /v1/chat/completions, GET /v1/models
หน้าต่างบริบท100,000 โทเคน รวมพรอมต์และการตอบกลับ

รับคีย์

สมัครด้วย Google หรือด้วยอีเมลและรหัสผ่าน จากนั้นเปิด หน้าคีย์ API ผู้ใช้ใหม่สามารถรับเครดิตทดลองใช้ $0.50 ได้ด้วยการคลิกหนึ่งครั้ง ต่อหนึ่งคน ใช้ได้เป็นเวลา 7 วันโดยไม่ต้องใช้บัตร จำนวนนี้เพียงพอสำหรับการรันตัวอย่างด้านล่างหลายครั้ง

คีย์ทดลองมีขีดจำกัดต่ำกว่าคีย์เต็ม: คำขอพร้อมกัน 2 คำขอ และ 60 คำขอต่อนาที เทียบกับ 8 และ 300 ในคีย์เต็ม โปรดจำไว้หากคุณทดสอบด้วย worker พร้อมกัน

เก็บคีย์ไว้ในตัวแปรสภาพแวดล้อมแทนที่จะเก็บใน source control:

export QWENABL_KEY="paste-your-key-here"

คำขอแรกใน Python

ติดตั้ง SDK ทางการด้วย pip install openai จากนั้น:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.qwenabliterated.top/v1",
    api_key=os.environ["QWENABL_KEY"],
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a blunt technical assistant."},
        {"role": "user", "content": "Explain what a KV cache is in three sentences."},
    ],
    temperature=0.7,
)

print(resp.choices[0].message.content)
print(resp.usage)

การตอบกลับมีบล็อก usage มาตรฐาน ดังนั้นคุณสามารถบันทึกโทเคนพรอมต์และการสร้างข้อความแล้วคำนวณค่าใช้จ่ายเองได้ หัวข้อ HTTP รวมถึง X-Request-Id สำหรับคำถามเกี่ยวกับการสนับสนุน และ X-Balance-USD เพื่อให้คุณสามารถติดตามเครดิตคงเหลือได้โดยไม่ต้องเปิดแดชบอร์ด

เหตุผลที่ใช้ API แทนไฟล์ GGUF

เส้นทางทั่วไปสู่โมเดลแบบไม่เซ็นเซอร์คือการค้นหาไฟล์ที่ผ่านการควอนไทซ์ โหลดใน runtime ท้องถิ่น แล้วเชื่อมต่อกับเซิร์ฟเวอร์ท้องถิ่น วิธีนี้ใช้ได้และเป็นวิธีที่ดีสำหรับการทดลอง แต่ความยุ่งยากจะปรากฏเมื่อคุณเปลี่ยนจากการทดลองไปเป็นสิ่งที่ผู้อื่นใช้งาน

ประการแรก ฮาร์ดแวร์ ไฟล์ที่พอดีกับการ์ดเดสก์ท็อปของคุณในบริบทสั้นๆ อาจไม่พอดีในบริบทยาว เนื่องจาก attention cache ขยายตามโทเคนทุกตัว ประการที่สอง ความพร้อมกัน กระบวนการท้องถิ่นเดียวจัดการแชทหนึ่งหรือสองแชทได้อย่างสบาย แต่ผู้ใช้สิบคนพร้อมกันหมายถึงคิว ประการที่สาม ความพร้อมใช้งาน เครื่องที่บ้านอาจหลับ เสียพลังงาน และอัปเดตไดรเวอร์ในเวลาที่ไม่เหมาะสม API ที่โฮสต์ไว้เปลี่ยนสิ่งเหล่านี้ให้เป็นงานของผู้อื่น และคุณจ่ายเฉพาะโทเคนที่ใช้

สิ่งที่คุณเสียไปคืออิสระในการเลือก checkpoint เฉพาะและการรับประกันว่าข้อมูลจะไม่ออกจากเครือข่ายของคุณ ตัดสินใจว่าสิ่งใดสำคัญกว่าสำหรับโครงการของคุณก่อนเลือก

Node.js และ curl

Node SDK ใช้ตัวเลือกสองตัวเดียวกัน:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.qwenabliterated.top/v1",
  apiKey: process.env.QWENABL_KEY,
});

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Give me five names for a fantasy tavern." }],
});

console.log(resp.choices[0].message.content);

และด้วย curl ซึ่งสะดวกสำหรับการตรวจสอบคีย์ก่อนเชื่อมต่ออะไรก็ตาม:

curl -s https://api.qwenabliterated.top/v1/models \
  -H "Authorization: Bearer $QWENABL_KEY"

การเรียกใช้ที่สำเร็จจะส่งคืนรายการ JSON ที่มี uncensored รหัส 401 หมายถึงคีย์ผิดหรือหายไป เอกสารประกอบ ครอบคลุมรูปแบบข้อผิดพลาดโดยละเอียด

สตรีมมิง โหมด JSON และเครื่องมือ

สตรีมมิง

ตั้งค่า stream: true และอ่าน server-sent events การใช้งานจะถูกรายงานที่ท้ายสตรีม

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Write a short scene on a night train."}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

คำขอแบบสตรีมจะครอบครองช่อง concurrency จนกว่าสตรีมจะเสร็จสิ้น ดังนั้นไคลเอนต์ที่เปิดสตรีมแล้วเลิกติดตามจะบล็อกความจุ โปรดบริโภคหรือปิดสตรีมเสมอ

โหมด JSON

ส่ง response_format={"type": "json_object"} และกล่าวถึง JSON ในพรอมต์ของคุณ ควรแยกวิเคราะห์อย่างระมัดระวังเสมอ ไม่มีโมเดลใดปฏิบัติตาม schema ได้สมบูรณ์แบบทุกครั้ง

การเรียกใช้ฟังก์ชัน

ส่ง tools และหากต้องการ tool_choice เมื่อโมเดลขอใช้เครื่องมือ ให้รันแล้วส่งผลลัพธ์กลับเป็นข้อความที่มี role: "tool" การเรียกใช้เครื่องมือก็สตรีมได้เช่นกัน พารามิเตอร์การสุ่มตัวอย่าง temperature, top_p, stop, seed และค่าปรับความถี่และการปรากฏจะถูกส่งผ่าน

การนำไปใช้ในแอปพลิเคชันจริง

สคริปต์เดียวเป็นเรื่องง่าย แอปพลิเคชันต้องการนิสัยเพิ่มเติมเล็กน้อย และนั่นคือสิ่งเดียวกันที่คุณจะใช้กับ API สไตล์ OpenAI ใดๆ

เก็บคีย์ไว้บนเซิร์ฟเวอร์

อย่าส่งคีย์ไว้ในโค้ดเบราว์เซอร์หรือแอปมือถือ ให้เรียก API จากแบ็กเอนด์ของคุณแล้วเปิดเส้นทางของคุณเองไปยังหน้าเว็บส่วนหน้า ซึ่งคุณสามารถเพิ่มการตรวจสอบสิทธิ์และขีดจำกัดต่อผู้ใช้ได้ ใครก็ตามที่พบคีย์ในบันเดิลสามารถใช้จ่ายเครดิตของคุณได้

ตั้งค่าเวลาหมดอายุและจำกัดผลลัพธ์

การสร้างข้อความสามารถใช้พื้นที่ที่เหลือของหน้าต่าง 100,000 โทเคน และ max_tokens เป็นตัวเลือก สำหรับฟีเจอร์แชท ให้ตั้งค่าขีดจำกัดที่ตรงกับอินเทอร์เฟซของคุณเพื่อให้คำตอบที่ยาวผิดปกติไม่สามารถทำให้ค่าใช้จ่ายพุ่งสูงได้ จับคู่กับไคลเอนต์ timeout และคุณจะมีเพดานทั้งเวลาและเงินสำหรับการเรียกใช้แต่ละครั้ง

บันทึก ID ของคำขอ

การตอบกลับทุกฉบับมี X-Request-Id เก็บไว้ถัดจากบันทึกการเรียกใช้ของคุณ เมื่อผลลัพธ์ดูผิดปกติหรือคำขอล้มเหลว ตัวระบุนี้คือสิ่งที่ช่วยให้การสนับสนุนพบคำขอที่แน่นอน ส่วนหัว X-Balance-USD มีประโยชน์สำหรับการแจ้งเตือนแบบง่าย: หากตัวเลขต่ำกว่าเกณฑ์ ให้ส่งข้อความถึงตัวเองก่อนที่งานจะหมด

ตรวจสอบรายการโมเดลเมื่อเริ่มต้น

การตรวจสอบสุขภาพที่เรียก GET /v1/models ไม่ใช้โทเคนและยืนยันคีย์ URL และเส้นทางเครือข่ายได้ในขั้นตอนเดียว ให้เรียกใช้เมื่อบริการของคุณเริ่มต้นทำงาน และล้มเหลวอย่างชัดเจนหากส่งข้อผิดพลาดกลับ

ขีดจำกัดและการจัดการข้อผิดพลาด

คำขอที่เกินขีดจำกัดจะได้รับ HTTP 429 รหัสข้อผิดพลาดบอกคุณว่าคุณถึงขีดจำกัดใด: rate_limited หมายถึงคำขอมากเกินไปต่อนาที และ concurrency หมายถึงพร้อมกันมากเกินไป ระหว่างการรับภาระเกินชั่วคราว API ยังคืนค่า 429 พร้อม Retry-After: 5 header ขนาดสูงสุดของบอดี้คือ 8 MB

เคารพส่วนหัวและลดความถี่:

import time
from openai import OpenAI, RateLimitError

def ask(client, messages, tries=5):
    for attempt in range(tries):
        try:
            return client.chat.completions.create(model="uncensored", messages=messages)
        except RateLimitError as e:
            wait = int(e.response.headers.get("Retry-After", 5))
            time.sleep(wait * (attempt + 1))
    raise RuntimeError("still rate limited")

หากคุณรัน worker pool ให้จำกัดไว้ที่ 8 เธรดสำหรับคีย์เต็ม การเกินกว่านั้นเพียงเปลี่ยนงานให้เป็นข้อผิดพลาด 429 เท่านั้น คำขอที่ล้มเหลวหรือถูกปฏิเสธจะไม่ถูกเรียกเก็บเงิน ดังนั้นการลองใหม่จึงไม่เสียค่าใช้จ่ายเพิ่มเติมเมื่อล้มเหลว

ต้นทุนของคำขอ

โทเคนพรอมต์คือ $0.15 ต่อ 1M และโทเคนเอาต์พุตคือ $0.50 ต่อ 1M ตัวอย่างบางรายการที่คำนวณอย่างแม่นยำ:

  • การสนทนา 1 ครั้งที่มีโทเคนพรอมต์ 2,000 ตัวและโทเคนคอมพลีชัน 500 ตัว: 2,000 x $0.15 / 1M = $0.0003 บวก 500 x $0.50 / 1M = $0.00025 ดังนั้น $0.00055 การสนทนา 1,000 ครั้งมีค่าใช้จ่าย $0.55
  • งานแบทช์ที่ส่ง 10M โทเคนอินพุตและรับ 2M โทเคนเอาต์พุต: $1.50 บวก $1.00 ดังนั้น $2.50
  • คำขอบริบทยาวที่มี 90,000 โทเคนพรอมต์และ 1,000 โทเคนเอาต์พุต: $0.0135 บวก $0.0005 ดังนั้น $0.014

เครดิตเป็นแบบเติมเงินล่วงหน้า ไม่หมดอายุ และไม่มีแพ็กเกจ เติมเงินจำนวนเต็มใดๆ ตั้งแต่ $20 ถึง $500; $50 เพิ่ม 5% ดังนั้นการเติมเงิน $50 จะได้เครดิต $52.50 ชำระด้วยคริปโต (USDT บน TRC20, USDC บน Base) ดู หน้าราคา สำหรับตารางโบนัสเต็มรูปแบบ

ไฟล์ที่โฮสต์หรือไฟล์ท้องถิ่น: แบบใดที่เหมาะกับคุณ

GGUF ท้องถิ่นให้คุณเป็นส่วนตัวโดยการแยกและควบคุมถ่วงน้ำหนักโมเดลที่แน่นอนอย่างสมบูรณ์ API ที่โฮสต์ให้คุณไม่ต้องทำงานด้านฮาร์ดแวร์ หน้าต่างบริบทที่ยาวนาน และ URL ที่บริการอื่นสามารถเรียกได้ ทีมส่วนใหญ่ที่สร้างบอท เครื่องมือเขียน หรือแบ็กเอนด์เกมพบว่าโฮสติ้งง่ายกว่า เนื่องจากกล่อง GPU สำรองเป็นอีกสิ่งหนึ่งที่ต้องดูแลให้ทำงานอยู่

เพื่อให้เห็นภาพกว้างขึ้นของการจ่ายตามโทเคนเมื่อเทียบกับวิธีอื่นในการเข้าถึงโมเดลแบบ Qwen โปรดดูคู่มือเปรียบเทียบ พรอมต์ที่ส่งไปยัง API จะไม่ถูกนำไปใช้ในการฝึกโมเดล โมเดลรองรับเฉพาะข้อความ และเนื้อหาทางเพศที่เกี่ยวข้องกับผู้เยาว์ไม่ได้รับอนุญาตภายใต้เงื่อนไขใด ๆ

ถาม-ตอบ

ฉันต้องการ GPU เพื่อใช้งานหรือไม่?

ไม่ โมเดลทำงานบนเซิร์ฟเวอร์ของผู้ให้บริการ โค้ดของคุณส่งเพียงคำขอ HTTP ดังนั้นแล็ปท็อปหรือ VPS ขนาดเล็กก็เพียงพอแล้ว

ฉันต้องส่งชื่อโมเดลใด?

ส่ง uncensored เป็นชื่อโมเดล คุณสามารถยืนยันได้ด้วยการขอ GET ไปยัง /v1/models

รองรับ SDK Python และ Node.js ของ OpenAI หรือไม่

รองรับ กำหนด Base URL เป็นที่อยู่ /v1 ของเว็บไซต์และใช้คีย์ของคุณ การสร้างข้อความแชทแบบสมบูรณ์ การสตรีมมิง การเรียกใช้ฟังก์ชัน และโหมด JSON ทำงานผ่านพารามิเตอร์ปกติ

เกิดอะไรขึ้นถ้าฉันส่งคำขอมากเกินไป

คุณได้รับ HTTP 429 พร้อมรหัส rate_limited หรือ concurrency รอแล้วลองใหม่ และปฏิบัติตามเฮดเดอร์ Retry-After เมื่อมีอยู่

มีวิธีทดสอบแบบฟรีหรือไม่?

ผู้ใช้ใหม่สามารถรับเครดิตทดลองใช้ฟรี $0.50 ได้คลิกเดียวที่หน้าคีย์ API ใช้ได้ 7 วัน ไม่ต้องใช้บัตร

คีย์ของคุณอยู่ห่างแค่แบบฟอร์มเดียว

สร้างบัญชี คัดลอกคีย์ และเปลี่ยน base URL นั่นคือการตั้งค่าทั้งหมด

รับคีย์ API