ไคลเอนต์ Node.js สำหรับ Character AI API อย่างไม่เป็นทางการ ซึ่งเป็นเว็บไซต์ที่ยอดเยี่ยมที่ทำให้ตัวละครมีชีวิตชีวาด้วย AI!
พื้นที่เก็บข้อมูลนี้ได้รับแรงบันดาลใจจาก API โหนดอย่างไม่เป็นทางการของ RichardDorian แม้ว่าฉันจะพบว่ามันใช้งานยากและมันไม่เสถียรและถูกเก็บถาวรจริงๆ ดังนั้นฉันจึงจัดแจงใหม่ด้วยจาวาสคริปต์
โครงการนี้ไม่มีส่วนเกี่ยวข้องกับ Character AI แต่อย่างใด! เป็นโครงการชุมชน วัตถุประสงค์ของโปรเจ็กต์นี้คือเพื่อนำเสนอและสร้างโปรเจ็กต์ที่ขับเคลื่อนโดย Character AI
หากคุณชอบโครงการนี้ โปรดตรวจสอบเว็บไซต์ของพวกเขา
เขียนอย่างสมบูรณ์ใน Javascript และ CommonJS (เพื่อความเข้ากันได้สูงสุดและใช้งานง่าย)
คำขอแบบอะซิงโครนัส
ใช้การสนทนาหรือใช้ API เพื่อดึงข้อมูล
ใช้งานง่าย
การพัฒนาเชิงรุก
รองรับการเข้าสู่ระบบของแขกและโทเค็น
npm ติดตั้ง node_Characterai
การรับรองความถูกต้องของแขกขั้นพื้นฐานและข้อความ:
const CharacterAI = need("node_Characterai");const characterAI = new CharacterAI();(async () => { // การตรวจสอบสิทธิ์ในฐานะแขก (ใช้ `.authenticateWithToken()` เพื่อใช้บัญชี) รอ characterAI.authenticateAsGuest(); // วาง ID ตัวละครของคุณที่นี่ const characterId = "8_1NyR8w1dOXmI1uWaieQcd147hecbdIK7CeEAIrdJw"; // สร้างวัตถุแชทเพื่อโต้ตอบกับการสนทนา const chat = รอ characterAI.createOrContinueChat(CharacterId); //ส่งข้อความ const response = รอ chat.sendAndAwaitResponse ("Hello discord mod!", true); console.log(ตอบกลับ); // ใช้ `response.text` เพื่อใช้เป็นสตริง})();
บางส่วนของ API (เช่น การจัดการการสนทนา) กำหนดให้คุณต้องเข้าสู่ระบบโดยใช้ sessionToken
หากต้องการรับ คุณสามารถเปิดเบราว์เซอร์ โดยไปที่เว็บไซต์ Character.AI ใน localStorage
สำคัญ
หากคุณใช้แพ็คเกจเวอร์ชันเก่าและได้รับ Authentication token is invalid
คุณต้องมี sessionToken
เพื่อตรวจสอบสิทธิ์อีกครั้ง (ตั้งแต่อัปเดต 1.2.5
และสูงกว่า) ดูด้านล่าง
หากคุณกำลังใช้บางอย่างที่ใช้แพ็คเกจและไม่ได้อัปเดตเป็นเวอร์ชันล่าสุดมาระยะหนึ่งแล้ว ตรวจสอบให้แน่ใจว่าได้อัปเดตแพ็คเกจโดยทำการ npm update node_characterai
หรือคัดลอกไฟล์ด้วยตนเอง หรือเปิดปัญหาที่เกี่ยวข้องไปยังแพ็คเกจ (หากมี หนึ่ง).
เปิดเว็บไซต์ Character.AI ในเบราว์เซอร์ของคุณ (https://beta.Character.ai)
เปิดเครื่องมือสำหรับนักพัฒนา ( F12 , Ctrl+Shift+I หรือ Cmd+J )
ไปที่แท็บ Application
ไปที่ส่วน Storage
และคลิกที่ Local Storage
มองหาคีย์ char_token
เปิดวัตถุ คลิกขวาที่ค่าแล้วคัดลอกโทเค็นเซสชันของคุณ
เปิดเว็บไซต์ Character.AI ในเบราว์เซอร์ของคุณบนอินเทอร์เฟซ OLD (https://old.Character.ai/)
เปิดแถบ URL เขียน javascript:
(คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) และวางข้อมูลต่อไปนี้:
(function(){let e=window.localStorage["char_token"];if(!e){alert("You need to log in first!");return;}let t=JSON.parse(e).value ;document.documentElement.innerHTML=`<div><i><p>จัดทำโดย node_Characterai - <a href="https://github.com/realcoloride/node_Characteraitab=readme-ov-file#using-an-access-token">คลิกที่นี่เพื่อดูข้อมูลเพิ่มเติม</a></p></i><p> นี่คือโทเค็นเซสชันของคุณ:</p><input value="${t}" readonly><p><strong>อย่าแชร์สิ่งนี้กับใครเลย เว้นแต่คุณจะรู้ว่าคุณกำลังทำอะไรอยู่! ถูกขโมยหรือร้องขอโดยคนที่คุณไม่ไว้วางใจ พวกเขาสามารถเข้าถึงบัญชีของคุณได้โดยไม่ต้องมีคุณ ยินยอม; หากเป็นเช่นนั้น โปรดปิดหน้าทันที</strong></p><button id="copy" onclick="navigator.clipboard.writeText('${t}'); alert('Copied to clipboard! ')">คัดลอกโทเค็นเซสชันไปยังคลิปบอร์ด</button><button onclick="window.location.reload();">รีเฟรชหน้า</button></div>`;localStorageKey=null;storageInformation=null;t =null;})();
หน้าต่อไปนี้ควรปรากฏขึ้น:
คลิกปุ่มที่เกี่ยวข้องเพื่อคัดลอกโทเค็นการเข้าถึงหรือโทเค็น ID ไปยังคลิปบอร์ดของคุณ
เมื่อใช้แพ็คเกจ คุณสามารถ:
เข้าสู่ระบบในฐานะแขกโดยใช้ authenticateAsGuest()
- เพื่อการใช้งานจำนวนมากหรือการทดสอบ
เข้าสู่ระบบด้วยบัญชีของคุณหรือโทเค็นโดยใช้ authenticateWithToken()
- เพื่อรับฟีเจอร์เต็มรูปแบบและการส่งข้อความไม่จำกัด
คุณสามารถค้นหา ID ตัวละครของคุณได้จาก URL ของหน้าแชทของตัวละคร
ตัวอย่างเช่น หากคุณไปที่หน้าแชทของตัวละคร Discord Moderator
คุณจะเห็น URL https://beta.character.ai/chatchar=8_1NyR8w1dOXmI1uWaieQcd147hecbdIK7CeEAIrdJw
ส่วนสุดท้ายของ URL คือรหัสอักขระ:
️ ตัวละคร AI มีความสามารถในการสร้างและตีความภาพในการสนทนา ตัวละครบางตัวใช้แนวคิดนี้เป็นตัวอักษรพิเศษ หรืออาจใช้เพื่อจดจำรูปภาพ หรือโต้ตอบกับตัวละครและให้รายละเอียดเพิ่มเติมเกี่ยวกับบางสิ่ง: ความเป็นไปได้ไม่มีที่สิ้นสุด
คุณสมบัติรูปภาพ Character AI ส่วนใหญ่สามารถใช้งานได้ดังนี้:
// ฟังก์ชันเหล่านี้ส่วนใหญ่จะส่งคืน URL ไปยัง imageawait chat.generateImage("dolphins swim in green water");await chat.uploadImage("https://www.example.com/image.jpg");await chat.uploadImage("./photos/image.jpg");// ประเภทอื่นๆ ที่รองรับได้แก่ Buffers, Readable Streams, File Paths และ URLsawait chat.uploadImage(imageBuffer);// รวมถึงเส้นทางสัมพันธ์ของรูปภาพด้วย จำเป็นต้องอัปโหลดภาพ await chat.sendAndAwaitResponse({ ข้อความ: "อะไรอยู่ในภาพนี้", image_rel_path: "https://www.example.com/coffee.jpg", image_description: "นี่คือกาแฟ", image_description_type: "HUMAN" // ตั้งค่านี้หากคุณกำลังพูดสิ่งที่ AI กำลังดูอยู่ด้วยตนเอง} จริง);
อุปกรณ์ประกอบฉากไปที่ @creepycats สำหรับการนำสิ่งเหล่านี้ไปใช้ส่วนใหญ่
ปัญหา | คำตอบ |
---|---|
โทเค็นไม่ถูกต้อง | ตรวจสอบให้แน่ใจว่าโทเค็นของคุณใช้งานได้จริง และคุณได้คัดลอกโทเค็นทั้งหมดของคุณ (ค่อนข้างยาว) หรือคุณยังไม่ได้อัปเดตแพ็คเกจ |
ในระบบส่วนใหญ่ puppeteer จะค้นหา Chromium โดยอัตโนมัติ แต่ในการแจกแจงบางอย่าง จะต้องระบุเส้นทางด้วยตนเอง คำเตือนนี้จะเกิดขึ้นหาก node_characterai ไม่สามารถค้นหา Chromium บน linux ( /usr/bin/chromium-browser ) และจะเกิดข้อผิดพลาดหาก puppeteer ไม่สามารถค้นหาตำแหน่งได้โดยอัตโนมัติ ดูสิ่งนี้เพื่อแก้ไข | |
เหตุใดกระบวนการโครเมียมจึงเปิด | เนื่องจากในปัจจุบัน การดึงข้อมูลแบบธรรมดาใช้งานไม่ได้ และฉันใช้ puppeteer (ไลบรารีควบคุมเบราว์เซอร์โครเมียม) เพื่อแก้ไขข้อจำกัดของ cloudflare |
authenticateAsGuest() ไม่ทำงาน | ดูฉบับที่ #14 |
เข้าถึงจำนวนข้อความสูงสุด | น่าเศร้าที่บัญชีรับเชิญมีข้อความในจำนวนที่จำกัดก่อนที่จะถูกจำกัดและถูกบังคับให้เข้าสู่ระบบ ดูด้านล่างสำหรับข้อมูลเพิ่มเติม |
วิธีใช้บัญชีเพื่อใช้บริการห้องสมุดจำนวนมาก | คุณสามารถใช้ การสนทนา ซึ่งเป็นคุณลักษณะที่เปิดตัวใน 1.0.0 เพื่อกำหนดให้กับผู้ใช้และช่องทาง หากต้องการสร้างบทสนทนาขึ้นมาใหม่ ให้ใช้ OOC (ไม่มีลักษณะเฉพาะ) เพื่อทำให้ AI คิดว่าคุณอยู่กับหลายคน ดูตัวอย่างที่นี่: (ข้อจำกัดความรับผิดชอบ: สำหรับตัวละครบางตัว บุคลิกของพวกเขาจะทำให้พวกเขาเพิกเฉยต่อคำขอ OOC ใด ๆ ) |
ฉันจะหลีกเลี่ยงการทำงานพร้อมกันและหยุดทำงานได้อย่างไรเมื่อใช้คำขอมากกว่าหนึ่งรายการในแต่ละครั้ง | ตรวจสอบวิธีแก้ปัญหาที่พบโดย @SeoulSKY ที่นี่โดยใช้ async-mutex |
เป็นทางการมั้ยเนี่ย. | ไม่ โปรเจ็กต์นี้สร้างขึ้นโดยแฟน ๆ ของเว็บไซต์และไม่เป็นทางการ เพื่อสนับสนุนนักพัฒนา โปรดตรวจสอบเว็บไซต์ของพวกเขา |
ทำสิ่งที่ยอดเยี่ยมกับ node_characterai | กรุณาแจ้งให้เราทราบ! |
✉️ ต้องการติดต่อฉัน | ดูโปรไฟล์ของฉัน |
☕ อยากสนับสนุนผม | คุณส่งกาแฟให้ฉันได้ที่ ko.fi: https://ko-fi.com/coloride ขอบคุณมาก! |
มีความคิด | เปิดปัญหาในแท็บ ปัญหา |
➕ ปัญหาอื่นๆ | เปิดปัญหาในแท็บ ปัญหา |
ในคลาส Client
คุณสามารถเข้าถึงคลาส Requester
และกำหนด puppeteer หรือตัวแปรอื่น ๆ ที่เกี่ยวข้องกับวิธีการทำงานของ CharacterAI โดยใช้ characterAI.requester.(property)
นอกจากนี้ ทุกสิ่งที่นี่อาจมีการเปลี่ยนแปลง ดังนั้นอย่าลืมอัปเดตแพ็คเกจบ่อยๆ
เปลี่ยนคุณสมบัติ .usePlus
จากผู้ร้องขอ และหากจำเป็น ให้เปลี่ยน .forceWaitingRoom
ตัวอย่างเช่น:
// ค่าเริ่มต้นคือ `false` characterAI.requester.usePlus = true;
ประมาณไม่กี่เดือนที่ผ่านมา แพ็คเกจต้องการเพียงโมดูล node-fetch
เท่านั้นจึงจะทำงานได้ แพ็คเกจถูกสร้างขึ้นโดยใช้คำขอ API แบบง่าย
อย่างไรก็ตาม เมื่อเวลาผ่านไป Cloudflare เริ่มต่อสู้กับการขูดและบอท ซึ่งทำให้แทบเป็นไปไม่ได้เลยที่ใครก็ตามจะใช้แพ็คเกจนี้
นี่คือที่ในเวอร์ชัน 1.1 และสูงกว่านั้น มีการใช้ puppeteer (ซึ่งใช้เบราว์เซอร์โครเมียม) เพื่อสร้างคำขอด้วย API
สิ่งสำคัญ: ทำการเปลี่ยนแปลง ก่อนที่ คุณจะเริ่มต้นไคลเอนต์ของคุณ!
ในคลาส CharacterAI คุณสามารถเข้าถึงผู้ร้องขอและกำหนดตัวแปร .puppeteerPath
หรืออาร์กิวเมนต์อื่นๆ และคุณสมบัติต่างๆ รวมถึง (และอาจมีการเปลี่ยนแปลงในเวอร์ชันในอนาคต) :
// เส้นทางปฏิบัติการ Chromium (ในลินุกซ์บางรุ่น, /usr/bin/chromium-browser)puppeteerPath;// อาร์กิวเมนต์เริ่มต้นสำหรับเมื่อเบราว์เซอร์เปิดตัวpuppeteerLaunchArgs;// บูลีนแสดงถึงการหมดเวลาเริ่มต้น (ค่าเริ่มต้นคือ 30000ms)puppeteerNoDefaultTimeout;// ตัวเลขที่เป็นตัวแทน หมดเวลาโปรโตคอลเริ่มต้นpuppeteerProtocolTimeout;
สำหรับผู้ใช้ Linux หาก puppeteer ของคุณตรวจไม่พบเส้นทางไปยัง Chromium โดยอัตโนมัติ คุณจะต้องระบุเส้นทางด้วยตนเอง
ในการดำเนินการนี้ คุณเพียงแค่ต้องตั้งค่า puppeteerPath
เป็นเส้นทาง Chromium ของคุณ:
characterAI.puppeteerPath = "/path/to/chromium-browser";
บน Linux คุณสามารถใช้คำสั่ง which
เพื่อค้นหาตำแหน่งที่ติดตั้ง Chromium ได้:
$ which chromium-browser # หรือคำสั่งอะไรก็ตามที่คุณใช้เพื่อเปิด Chrome
ฉันขอแนะนำให้คุณอัปเดตแพ็คเกจนี้ บ่อยครั้ง เพื่อแก้ไขข้อบกพร่องและเพิ่มเติมใหม่
หากคุณมีปัญหาหรือแนวคิด โปรดแจ้งให้เราทราบในส่วน ปัญหา
หากคุณใช้ API นี้ คุณจะต้องปฏิบัติตามข้อกำหนดการใช้งานของเว็บไซต์ด้วย
(จริง) coloride - 2023-2024, MIT ที่ได้รับอนุญาต