Γιατί η απόκριση JSON αποτυγχάνει στον έλεγχο εγκυρότητας
Η ανάλυση JSON αποτυγχάνει όταν το μοντέλο προσαρτά συνομιλιακό κείμενο εκτός του μπλοκ κώδικα. Τα μοντέλα χωρίς λογοκρισία δίνουν προτεραιότητα στη ροή φυσικής γλώσσας, οπότε συχνά προσθέτουν "Ακολουθεί το JSON" πριν ή μετά τα ωμά δεδομένα. Αυτό σπάει τους αυστηρούς parsers που αναμένουν μόνο το αντικείμενο.
Χρησιμοποιήστε το response_format η παράμετρος ορισμένη σε {"type": "json_object"}. Αυτό αναγκάζει το μοντέλο να εξάγει μόνο έγκυρο JSON. Εξαλείφει την ανάγκη για σενάρια καθαρισμού regex στον κώδικά σας. Ωστόσο, σημειώστε ότι αυτό καταναλώνει περισσότερα tokens ανά αίτημα επειδή το μοντέλο είναι περιορισμένο.
- Ορίστε
response_formatγιαjson_objectστο σώμα του αιτήματός σας. - Βεβαιωθείτε ότι το system prompt ζητά ρητά έξοδο JSON.
- Διαχειριστείτε ομαλά τρέχουσες κόμμα ή μικρά σφάλματα σύνταξης αν το μοντέλο παρασυρθεί.
from openai import OpenAI
client = OpenAI(base_url="https://api.abliteratedllmonline.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)
Διαχείριση ορίων παραθύρου πλαισίου σωστά
Το παράθυρο πλαισίου (context window) χωράει 100.000 tokens συνολικά, συνδυάζοντας τόσο την είσοδο όσο και την έξοδο. Αν στείλετε μια μακρά ιστορία συνομιλίας, πρέπει να μειώσετε το μέγιστο μήκος εξόδου. Η προεπιλεγμένη μέγιστη έξοδος είναι 2.048 tokens εκτός αν ορίσετε διαφορετικά.
Υπολογίστε τα εναπομείναντα tokens αφαιρώντας το μέγεθος εισόδου από 100,000. Αν κάνετε roleplay, κρατήστε το system prompt συνοπτικό. Αποθηκεύστε μόνο τις πρόσφατες στροφές συνομιλίας στο αίτημα API. Το παλαιότερο context μπορεί να συνοψιστεί ή να περικοπεί. Αυτό αποτρέπει την πρόσκρουση στο αυστηρό όριο κατά τη διάρκεια της δημιουργίας.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);
Σφάλματα κλήσης συναρτήσεων με μοντέλα uncensored
Η κλήση συναρτήσεων αποτυγχάνει όταν το μοντέλο αγνοεί τους ορισμούς των εργαλείων ή επιστρέφει μη έγκυρα ορίσματα. Τα μοντέλα uncensored μπορεί να προτεραιοποιούν τις δημιουργικές απαντήσεις έναντι της αυστηρής χρήσης εργαλείων. Μπορεί να χαλκεύουν παραμέτρους που δεν υπάρχουν στο σχήμα σας.
Ορίστε τα εργαλεία σας καθαρά στο tools array. Χρησιμοποιήστε tool_choice για να επιβληθεί συγκεκριμένη συμπεριφορά. Αν το μοντέλο απορρίψει να καλέσει ένα εργαλείο, ελέγξτε το system prompt για συγκρουόμενες οδηγίες. Βεβαιωθείτε ότι τα ονόματα και οι περιγραφές των εργαλείων είναι αδιαμφίβολα. Δοκιμάστε με απλά ερωτήματα πρώτα για να επαληθεύσετε την ενσωμάτωση.
- Παρέχετε καθαρά ονόματα εργαλείων και περιγραφές.
- Χρήση
tool_choiceγια τον έλεγχο της κλήσης. - Επικύρωση ορισμάτων έναντι του schema σας πριν την εκτέλεση.
curl https://api.abliteratedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
}'
Διακοπές ροής δεδομένων και χειρισμός SSE
Η ροή δεδομένων μέσω Server-Sent Events (SSE) μπορεί να χάσει tokens αν ο πελάτης αποσυνδεθεί ή αν υπάρξουν μικροπροβλήματα στο δίκτυο. Το τελευταίο κομμάτι περιέχει στατιστικά χρήσης tokens. Πρέπει να αναλύσετε αυτό το κομμάτι για να λάβετε τις μετρήσεις εισόδου και εξόδου.
Εφαρμόστε έναν ισχυρό client SSE που χειρίζεται λογική επανασύνδεσης. Μην υποθέτετε ότι κάθε κομμάτι περιέχει δεδομένα. Μερικά κομμάτια μπορεί να είναι κενά ή να περιέχουν μόνο whitespace. Επεξεργαστείτε το τελικό κομμάτι για να ενημερώσετε το υπόλοιπο πιστωτικού σας ή τους μετρητές tokens. Αυτό διασφαλίζει ακριβή χρέωση και παρακολούθηση χρήσης.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Ρυθμίσεις θερμοκρασίας που επηρεάζουν NSFW έξοδο
Η θερμοκρασία ελέγχει την τυχαιότητα της εξόδου του μοντέλου. Οι υψηλότερες τιμές όπως 0.8 ή 0.9 αυξάνουν τη δημιουργικότητα και την απρόβλεπτη φύση. Οι χαμηλότερες τιμές όπως 0.2 κάνουν την έξοδο πιο ντετερμινιστική και εστιασμένη. Για NSFW roleplay, οι υψηλότερες θερμοκρασίες παράγουν πιο ποικίλες και έντονες απαντήσεις.
Πειραματιστείτε με διαφορετικές τιμές για να βρείτε τη σωστή ισορροπία. Μια πολύ υψηλή θερμοκρασία μπορεί να οδηγήσει σε ακοherent ή επαναλαμβανόμενο κείμενο. Μια πολύ χαμηλή θερμοκρασία μπορεί να οδηγήσει σε ρομποτικό ή βαρετό διάλογο. Προσαρμόστε βάσει του επιθυμητού τόνου και συνέπειας. Το μοντέλο χωρίς λογοκρισία ανταποκρίνεται καλά σε ρυθμίσεις υψηλότερης δημιουργικότητας.
- Χρησιμοποιήστε 0.7-0.9 για δημιουργική roleplay.
- Χρησιμοποιήστε 0.2-0.5 για γεγοντολογικά ή προγραμματιστικά tasks.
- Παρακολουθήστε την ποιότητα εξόδου καθώς προσαρμόζεστε.
Top P και ποικιλομορφία στη δημιουργία roleplay
Η Top P (δειγματοληψία πυρήνα) περιορίζει το μοντέλο να εξετάσει μόνο το κορυφαίο ποσοστό της πιθανότητας. Λειτουργεί με τη θερμοκρασία για να ελέγξει την ποικιλομορφία. Μια χαμηλή τιμή Top P κάνει την έξοδο πιο προβλέψιμη. Μια υψηλή τιμή επιτρέπει πιο ποικίλες επιλογές λέξεων.
Συνδυάστε το Top P με τη θερμοκρασία για λεπτομερή έλεγχο. Για παράδειγμα, μια υψηλή θερμοκρασία με χαμηλό Top P μπορεί να παράγει δημιουργικό αλλά εστιασμένο κείμενο. Αυτό είναι χρήσιμο για τη διατήρηση της φωνής του χαρακτήρα ενώ επιτρέπει αυθόρμητες ενέργειες. Δοκιμάστε διαφορετικούς συνδυασμούς για να ταιριάξουν στο στυλ αφήγησής σας.
from openai import OpenAI
client = OpenAI(base_url="https://api.abliteratedllmonline.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)
Κατανόηση ορίων και κόστους tokens
Η χρήση token επηρεάζει άμεσα το προπληρωμένο υπόλοιπό σας. Η API χρεώνει $0.15 ανά εκατομμύριο tokens εισόδου και $0.50 ανά εκατομμύριο tokens εξόδου. Τα tokens εξόδου είναι πιο ακριβά επειδή αντιπροσωπεύουν το έργο του μοντέλου. Το streaming δεν αλλάζει το κόστος· πληρώνετε για όλα τα παραγόμενα tokens.
Παρακολουθήστε τη χρήση των tokens σας για να αποφύγετε απρόσμενες χρεώσεις. Το τελευταίο chunk SSE παρέχει τον ακριβή αριθμό tokens. Χρησιμοποιήστε το για να ενημερώσετε το τοπικό υπόλοιπο ή το πίνακα χρεώσεων. Τα σφάλματα και οι απορρίψεις είναι δωρεάν, οπότε πληρώνετε μόνο για τις επιτυχημένες ολοκληρώσεις. Αυτό το μοντέλο πληρωμής ανά χρήση διασφαλίζει ότι δεν πληρώνετε υπερβολικά.
- Τα input tokens κοστίζουν $0.15 ανά εκατομμύριο.
- Τα tokens εξόδου κοστίζουν $0.50 ανά εκατομμύριο.
- Οι αρνήσεις και τα σφάλματα είναι δωρεάν.
Αντικατάσταση κλειδιού API και όρια ρυθμού
Κάθε λογαριασμός επιτρέπει μόνο ένα ενεργό κλειδί API. Αν αναγεννήσετε το κλειδί σας, το παλιό γίνεται ακυρό αμέσως. Αυτό διασφαλίζει την ασφάλεια αλλά απαιτεί να ενημερώσετε τους clients σας άμεσα. Τα όρια ταχύτητας ορίζονται στα 300 αιτήματα ανά λεπτό και 8 ταυτόχρονες αιτήσεις ανά κλειδί.
Η υπέρβαση αυτών των ορίων οδηγεί σε σφάλματα HTTP 429. Υλοποιήστε εκθετική υποχώρηση στη λογική επανάληψής σας. Παρακολουθήστε τον όγκο των αιτημάτων σας για να μείνετε εντός ορίων. Αν χρειάζεστε υψηλότερη απόδοση, εξετάστε την κατανομή του φορτίου σας σε πολλαπλά λογαριασμούς ή τη βελτιστοποίηση των μεγεθών prompt. Το κλειδί εμφανίζεται αμέσως μετά την εγγραφή, οπότε φυλάξτε το με ασφάλεια.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);
Επίλυση προβλημάτων κοινών σφαλμάτων HTTP
Τα σφάλματα HTTP υποδηλώνουν προβλήματα με την αίτησή σας ή την απόκριση του διακομιστή. Τα συνηθισμένα σφάλματα περιλαμβάνουν 400 Bad Request, 401 Unauthorized και 429 Too Many Requests. Ένα σφάλμα 400 συχνά σημαίνει λανθασμένο JSON ή μη έγκυρες παραμέτρους. Ένα σφάλμα 401 υποδηλώνει λανθασμένο ή ληγμένο API key.
Ελέγξτε τα headers και το payload του αιτήματός σας για συντακτικά λάθη. Επαληθεύστε ότι το κλειδί API σας είναι σωστό και ενεργό. Αν λάβετε σφάλμα 429, περιμένετε και προσπαθήστε ξανά με εκθετική επαναπροσπάθεια. Χρησιμοποιήστε τα επίσημα SDKs OpenAI για να χειριστούν αυτά τα σφάλματα αυτόματα. Παρέχουν σαφή μηνύματα σφάλματος και λογική επαναπροσπάθειας. Αυτό μειώνει τον χρόνο ανάπτυξης και βελτιώνει την αξιοπιστία.
- 400: Ελέγξτε τη σύνταξη JSON και τις παραμέτρους.
- 401: Επαληθεύστε την εγκυρότητα του API key.
- 429: Υλοποιήστε λογική επαναπροσπάθειας με backoff.
curl https://api.abliteratedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
}'