

โครงการนี้เป็นรุ่นที่โฮสต์ตัวเองของ API ผู้ช่วยรัฐใหม่ของ OpenAI -
คำจำกัดความและประเภทของ API ทั้งหมดนั้น ถูกสร้างขึ้นอัตโนมัติ 100% จากข้อมูลจำเพาะ OpenAPI อย่างเป็นทางการของ OpenAI ดังนั้นสิ่งที่ต้องใช้ในการสลับระหว่าง API อย่างเป็นทางการและ API ที่กำหนดเองของคุณกำลังเปลี่ยน baseURL -
ซึ่งหมายความว่าพารามิเตอร์ API การตอบสนองและประเภททั้งหมดนั้นเข้ากันได้กับ Wire กับ OpenAI API อย่างเป็นทางการและความจริงที่ว่าพวกเขาได้รับการสร้างอัตโนมัติหมายความว่ามันจะค่อนข้างง่ายที่จะทำให้พวกเขาซิงค์ตลอดเวลา
นี่คือตัวอย่างที่ใช้แพ็คเกจ openai อย่างเป็นทางการของ Node.js:
import OpenAI from 'openai'
// The only difference is the `baseURL` pointing to your custom API server
const openai = new OpenAI ( {
baseURL : 'http://localhost:3000'
} )
// Since the custom API is spec-compliant with OpenAI, you can use the sdk normally ?
const assistant = await openai . beta . assistants . create ( {
model : 'gpt-4-1106-preview' ,
instructions : 'You are a helpful assistant.'
} ) นี่คือตัวอย่างเดียวกันโดยใช้แพ็คเกจ Python openai อย่างเป็นทางการ:
from openai import OpenAI
client = OpenAI (
base_url : "http://localhost:3000"
)
# Now you can use the sdk normally!
# (only file and beta assistant resources are currently supported)
# You can even switch back and forth between the official and custom APIs!
assistant = client . beta . assistants . create (
model = "gpt-4-1106-preview" ,
description = "You are a helpful assistant."
)โปรดทราบว่าโครงการนี้ไม่ได้หมายถึงการพักผ่อนหย่อนใจอย่างเต็มรูปแบบของ OpenAI API ทั้งหมด ค่อนข้าง จะมุ่งเน้นเฉพาะส่วนที่เป็นสถานะของผู้ช่วยใหม่ API รองรับประเภททรัพยากรต่อไปนี้:
ดูคู่มือผู้ช่วย OpenAI อย่างเป็นทางการสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของผู้ช่วย
ความสามารถในการเรียกใช้ผู้ช่วย OpenAI แบบกำหนดเองที่ เข้ากันได้ 100% กับผู้ช่วย OpenAI อย่างเป็นทางการ ปลดล็อคความเป็นไปได้ที่เป็นประโยชน์ทุกประเภท:
สิ่งสำคัญที่สุดคือถ้า OpenAI "GPT Store" จบลงด้วยการได้รับแรงฉุดจากผู้ใช้งานประจำสัปดาห์ 100M ของ ChatGPT ความสามารถในการทำงานอย่างน่าเชื่อถือดีบักและปรับแต่งผู้ช่วยที่เข้ากันได้ของ OpenAI จะกลายเป็นสิ่งสำคัญอย่างไม่น่าเชื่อในอนาคต
ฉันสามารถจินตนาการถึงร้านค้าผู้ช่วยในอนาคตที่เข้ากันได้อย่างเต็มที่กับ GPT ของ Openai แต่แทนที่จะพึ่งพา Openai ในฐานะผู้รักษาประตูมันอาจจะมี การกระจายอำนาจอย่างเต็มที่หรือบางส่วน -
ข้อกำหนดเบื้องต้น:
ติดตั้ง deps:
pnpm installสร้างประเภท Prisma ในพื้นที่:
pnpm generatecp .env.example .envDATABASE_URL - สตริงการเชื่อมต่อ postgresbrew install postgresql && brew services start postgresqlnpx prisma db push เพื่อตั้งค่าฐานข้อมูลของคุณตาม Schema Prisma ของเราOPENAI_API_KEY - คีย์ OpenAI API สำหรับเรียกใช้การโทรเสร็จสิ้นการแชทพื้นฐานbrew install redis && brew services start redisREDIS_HOST - ไม่บังคับ; ค่าเริ่มต้นเป็น localhostREDIS_PORT - ไม่บังคับ; ค่าเริ่มต้นเป็น 6379REDIS_USERNAME - ไม่บังคับ; ค่าเริ่มต้นเป็น defaultREDIS_PASSWORD - ไม่บังคับbrew install localstack/tap/localstack-cli && localstack start -dbrew install minio/stable/minio && minio server /dataS3_BUCKET - จำเป็นS3_REGION - ไม่บังคับ; ค่าเริ่มต้นเป็น autoS3_ENDPOINT - จำเป็น; ตัวอย่าง: https://<id>.r2.cloudflarestorage.comACCESS_KEY_ID - จำเป็น (CloudFlare R2 เอกสาร)SECRET_ACCESS_KEY - จำเป็น (Cloudflare R2 เอกสาร)แอพนี้ประกอบด้วยบริการสองบริการ: เซิร์ฟเวอร์ API แบบพักผ่อนและ นักวิ่ง Async บริการทั้งสองไม่มีสัญชาติและสามารถปรับขนาดในแนวนอน
มีสองวิธีในการเรียกใช้บริการเหล่านี้ในพื้นที่ วิธีที่เร็วที่สุดคือผ่าน tsx :
# Start the REST API server in one shell
npx tsx src/server
# Start an async task queue runner in another shell
npx tsx src/runnerอีกทางเลือกหนึ่งคุณสามารถถ่ายทอดแหล่ง TS เป็น JS ก่อนซึ่งเป็นที่ต้องการสำหรับการทำงานในการผลิต:
pnpm build
# Start the REST API server in one shell
npx tsx dist/server
# Start an async task queue runner in another shell
npx tsx dist/runner ตัวอย่างนี้มีสคริปต์ผู้ช่วยแบบ end-to-end ซึ่งใช้ฟังก์ชัน get_weather ที่กำหนดเอง
คุณสามารถเรียกใช้งานได้โดยใช้ไคลเอนต์ OpenAI อย่างเป็นทางการสำหรับ Node.js กับ OpenAI API เริ่มต้นที่โฮสต์ที่ https://api.openai.com/v1
npx tsx e2eในการเรียกใช้ชุดทดสอบเดียวกันกับ API ในพื้นที่ของคุณคุณสามารถเรียกใช้:
OPENAI_API_BASE_URL= ' http://127.0.0.1:3000 ' npx tsx e2eมันค่อนข้างเจ๋งที่เห็นทั้งสองชุดทดสอบที่ใช้รหัสผู้ช่วยเดียวกันที่แน่นอนโดยใช้ไคลเอนต์ Openai Node.js อย่างเป็นทางการ - โดยไม่มีความแตกต่างที่เห็นได้ชัดเจนระหว่างสองเวอร์ชัน Huzzah -
ตัวอย่างนี้มีสคริปต์ผู้ช่วยแบบ end-to-end ซึ่งใช้เครื่องมือ retrieval ในตัวด้วยไฟล์ readme.md นี้เป็นไฟล์แนบ
คุณสามารถเรียกใช้งานได้โดยใช้ไคลเอนต์ OpenAI อย่างเป็นทางการสำหรับ Node.js กับ OpenAI API เริ่มต้นที่โฮสต์ที่ https://api.openai.com/v1
npx tsx e2e/retrieval.tsในการเรียกใช้ชุดทดสอบเดียวกันกับ API ในพื้นที่ของคุณคุณสามารถเรียกใช้:
OPENAI_API_BASE_URL= ' http://127.0.0.1:3000 ' npx tsx e2e/retrieval.tsผลลัพธ์จะแตกต่างกันเล็กน้อยเนื่องจากความแตกต่างในการใช้งานการดึงข้อมูลในตัวของ OpenAI และการใช้งานการดึงข้อมูลที่ไร้เดียงสาของเรา
โปรดทราบว่าการใช้งาน retrieval ปัจจุบันสนับสนุนไฟล์ข้อความเช่น text/plain และ markdown เท่านั้นเนื่องจากไม่มีการประมวลผลล่วงหน้าหรือการแปลงจะเสร็จสิ้นในขณะนี้ นอกจากนี้เรายังใช้วิธีการดึงข้อมูลที่ไร้เดียงสามากในขณะนี้ซึ่งจะส่งคืนเนื้อหาทั้งหมดของไฟล์ทั้งหมดเมื่อเทียบกับการประมวลผลล่วงหน้าและส่งคืนชิ้นส่วนที่เกี่ยวข้องกับความหมายมากที่สุดเท่านั้น ดูปัญหานี้สำหรับข้อมูลเพิ่มเติม
GET /files
POST /files
DELETE /files/:file_id
GET /files/:file_id
GET /files/:file_id/content
GET /assistants
POST /assistants
GET /assistants/:assistant_id
POST /assistants/:assistant_id
DELETE /assistants/:assistant_id
GET /assistants/:assistant_id/files
GET /assistants/:assistant_id/files
POST /assistants/:assistant_id/files
DELETE /assistants/:assistant_id/files/:file_id
GET /assistants/:assistant_id/files/:file_id
POST /threads
GET /threads/:thread_id
POST /threads/:thread_id
DELETE /threads/:thread_id
GET /threads/:thread_id/messages
POST /threads/:thread_id/messages
GET /threads/:thread_id/messages/:message_id
POST /threads/:thread_id/messages/:message_id
GET /threads/:thread_id/messages/:message_id/files
GET /threads/:thread_id/messages/:message_id/files/:file_id
GET /threads/:thread_id/runs
POST /threads/runs
POST /threads/:thread_id/runs
GET /threads/:thread_id/runs/:run_id
POST /threads/:thread_id/runs/:run_id
POST /threads/:thread_id/runs/:run_id/submit_tool_outputs
POST /threads/:thread_id/runs/:run_id/cancel
GET /threads/:thread_id/runs/:run_id/steps
GET /threads/:thread_id/runs/:run_id/steps/:step_id
GET /openapi
คุณสามารถดูข้อมูลจำเพาะ OpenAPI ที่สร้างขึ้นอัตโนมัติของเซิร์ฟเวอร์ได้โดยเรียกใช้เซิร์ฟเวอร์จากนั้นไปที่ http://127.0.0.1:3000/openapi
สถานะ : เส้นทาง API ทั้งหมดได้รับการทดสอบแบบเคียงข้างกับ OpenAI API อย่างเป็นทางการและทำงานตามที่คาดไว้ คุณสมบัติที่ขาดหายไปเพียงอย่างเดียวในขณะนี้คือการรองรับเครื่องมือ code_interpreter ในตัว (ปัญหา) และรองรับไฟล์ที่ไม่ใช่ข้อความด้วยเครื่องมือ retrieval ในตัว (ปัญหา) ฟังก์ชั่นอื่น ๆ ทั้งหมดควรได้รับการสนับสนุนอย่างเต็มที่และเข้ากันได้กับ API อย่างเป็นทางการ
สิ่งที่ต้องทำ :
code_interpreter ในตัว (ปัญหา)retrieval ในตัว (ปัญหา)MIT © Travis Fischer
หากคุณพบว่าโครงการนี้มีประโยชน์โปรดพิจารณาสนับสนุนฉันหรือติดตามฉันทาง Twitter