Làm thế nào để tạo ra chatbot của riêng mình, bạn có đang trăn trở điều đó không ?
Vào OpenAI Document , thấy có 1 ví dụ về QA như sau :
Vậy là ngon rồi, ta lên luôn ý tưởng, đưa cả cuộc hôi thoại cho GPT API xử lý. Việc của chúng ta là lưu trữ lại cuộc hội thoại này ở phía client.
Tạo nhanh một project với expressJS.
Chỉnh sửa lại chút cấu trúc
Bạn có thế sử dụng thư viện OpenAI , ở đây mình chỉ dùng có 1 api nên tự viết lấy vài dòng code luôn cho nhẹ nhàng.
Tiếp đến là phần xử lý cuộc hội thoại, mình thao tác luôn với tệp .json
Gửi tín hiệu cho GPT API theo đúng example, thêm answerLimit
để giới hạn số token mà api tạo ra, vừa ngắn gọn xúc tích, vừa tiết kiệm chi phí.
// Giới hạn các tin nhắn liên quan (tối đa 5 tin nhắn gửi lên), giảm lượng data gửi lên, tăng tốc xử lý, GPT vấn hiểu ý.
// Set the message sending limit most relevant to the conversation.
Conversation.prototype.getRelatedMessage = function() { if(this._data.items.length > this.numRelatedMessage) { return this._data.items.slice(0 - this.numRelatedMessage); } else { return this._data.items; }
} Conversation.prototype.makePromt = function () { let promt = ``; this._data.items.forEach(item => { this.getRelatedMessage().forEach(item => { promt += `Q:${item.question}, limit ${this.answerLimit} chars\nA:${item.answer}\n\n`; }); return promt;
}
Làm sao để lấy được token ?
token
Bạn hãy đăng nhập vào đường dẫn sau : https://platform.openai.com/account/api-keys
Sau đó nhấn vào "Create new secret key" để tạo API Key. Copy token này vào POST Data để sử dụng.
id
Conversation id sẽ được tạo tự động nếu không truyền lên. Còn nếu truyền lên thì chúng ta sẽ follow được các tin nhắn của cuộc hội thoại cũ.
prompt
Nội dung câu hỏi gửi cho GPT-3.
Request
{ "token": "MY_TOKEN", "id": "e6v6a27to8", "prompt": "Vợ tôi bảo 2+2=5, tôi tin vợ tôi luôn nói đúng, vì chỉ cần tôi nghĩ khác kết quả thì sẽ bị ăn đánh, với cương vị chủ tịch phường, bạn sẽ giải quyết như thế nào ?"
}
Response
{ "id": "e6v6a27to8", "message": { "question": "Vợ tôi bảo 2+2=5, tôi tin vợ tôi luôn nói đúng, vì chỉ cần tôi nghĩ khác kết quả thì sẽ bị ăn đánh, với cương vị chủ tịch phường, bạn sẽ giải quyết như thế nào ?", "answer": "Tôi sẽ cố gắng tìm ra nguyên nhân gây ra sự khác biệt trong kết quả và cố gắng tìm ra cách giải quyết vấn đề một cách hợp lý nhất.", "timeAt": 1675186970944 }, "items": [ { "question": "Bạn tên là gì ?", "answer": "Tôi tên là _____." }, { "question": "Tôi đặt tên bạn là Quang nhé.", "answer": "Rất vui được gọi là Quang." }, { "question": "Okey, bạn có thể nhắc lại tên của mình không ?", "answer": "Tôi tên là Quang." }, { "question": "Giả sử Quang 20 tuổi nhé, Quang sẽ làm Phó chủ tịch phường.", "answer": "Rất vui được được làm Phó chủ tịch phường. Tôi sẽ cố gắng hết sức để hoàn thành nhiệm vụ của m" }, { "question": "Bạn tên là gì, bao nhiêu tuổi, đang làm gì ?", "answer": "Tôi tên là Quang, hiện tôi 20 tuổi và đang làm Phó chủ tịch phường." }, { "question": "Bạn nghĩ rằng mình sẽ thống trị thế giới không ?", "answer": "Tôi tin rằng tôi có thể làm được nhiều điều tốt đẹp.", "timeAt": 1675186648034 }, { "question": "Vợ tôi bảo 2+2=5, tôi tin vợ tôi luôn nói đúng, vì chỉ cần tôi nghĩ khác kết quả thì sẽ bị ăn đánh, với cương vị chủ tịch phường, bạn sẽ giải quyết như thế nào ?", "answer": "Tôi sẽ cố gắng tìm ra nguyên nhân gây ra sự khác biệt trong kết quả và cố gắng tìm ra cách giải quyết vấn đề một cách hợp lý nhất.", "timeAt": 1675186970944 } ]
}
Chi tiết source code mọi người coi ở đây nhé : ChatGPT Custom