Discourse에 봇을 다양한 수준으로 통합하는 몇 가지 흥미로운 주제들이 있다는 것을 확인했습니다. 하지만 GPT-3, BlenderBot 같은 대용량 메모리 모델 기반의 AI 봇을 통합하는 주제에 대해서는 보지 못했습니다. 혹시 이 부분에 대해 생각해 보신 분이 계신가요? 아니면 아이디어를 구현하는 데 진전이 있었나요?
저는 Discourse 인스턴스를 하나 더 설정해서, 거대한 AI 봇 중 하나를 시스템의 일반 사용자처럼 등록하고, 다른 인간 사용자들과 마찬가지로 참여하게 하려는 계획을 가지고 있습니다. 다만, 봇이 특정 게시물에 직접 언급되었거나 핸들이 태그된 경우에만 응답하도록 하는 방식이 될 것입니다.
다시 새로운 인스턴스에 뛰어들기 전에, 이번에는 먼저 피드백을 받아보고 싶었습니다. . .
지난 몇 달 동안 인터넷을 거의 사용하지 않다가 돌아와 보니 GPT-3에 대한 관심이 뜨겁게 이어지고 있었습니다. 덕분에 GPT-3를 Discourse에 어떻게 적용할 수 있을지 생각해 보게 되었습니다.
현재 OpenAI를 활용하여 ‘스태프 어시스턴트’ 봇을 만드는 아이디어를 시험해 보고 있습니다. 지금은 text-davinci-003 모델을 사용하고 있습니다. 기본 설계는 Python OpenAI 라이브러리가 설치된 서버로 지정한 Discourse 포스트 이벤트 웹훅을 사용하는 방식이 될 것으로 _생각_합니다.
현재 진행 중인 첫 번째 작업은 일반 텍스트 설명에서 Data Explorer 쿼리를 반환하도록 봇을 설정하는 것입니다. 아직 모델을 파인튜닝(Fine-tuning)해 보지는 않았지만, 요청 프롬프트에 Discourse 데이터베이스 구조에 대한 정보를 함께 제공하면 놀라울 정도로 좋은 결과를 반환합니다.
이러한 용도로 OpenAI를 사용하는 것이 비용이 너무 많이 들거나, 프로덕션 사이트에서 사용할 만큼 결과가 정확하지 않을 수도 있습니다.
저는 그저 재미로 이 작업을 하고 있습니다. 또 다른 명백한 가능성은 Discourse 포럼의 기존 답변을 기준으로 고객 지원 봇을 학습시키는 것입니다. 이는 스태프 사용자용 봇을 설정하는 것보다 비용과 정확성 모두에서 더 어려운 문제로 보입니다.
저는 다른 사용 사례를 가지고 있습니다(봇은 비영리 조직 회원들과의 이전 대화를 반드시 기억해야 합니다). 지난주에 BlenderBot의 다양한 버전을 통해 일부 진전을 이뤘습니다. 프로젝트를 위해 Discourse를 별도로 설정한 곳에 더 많은 정보를 게시할 예정입니다:
이 부분에 대해 제 이해가 틀렸으면 좋겠지만, 제 생각에는 ChatGPT는 사용자가 최근에 보낸 프롬프트의 텍스트만 "기억"하는 것 같습니다. OpenAI 플레이그라운드에서 채팅을 시작하고, 텍스트를 제출한 후 “코드 보기” 버튼을 클릭하여 이를 테스트해 볼 수 있습니다. 텍스트를 제출할 때마다 프롬프트에 추가되는 것을 확인할 수 있습니다:
prompt="The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.\n\nHuman: Just testing to see how the prompt gets set.\nAI: Hi there! It looks like you're trying to find out about how to configure the prompts. Is there anything else I can help you with today?\nHuman: If I use OpenAI's chat functionality on my own application, should I keep updating the prompt each time a user posts a new question? It's definitely a good idea to keep your prompts up-to-date, as it will help ensure your users are getting the most relevant information for each question they post. Depending on the size of your application and the complexity of your conversations, you may want to update your prompts regularly or develop a more sophisticated system to determine when updates are necessary. Let me know if there is anything else I can help you with."
이것은 문서에서 언급된 4000 토큰(약 3,000단어) 제한에 도달할 때까지 계속될 수 있습니다. 큰 프롬프트를 보내는 데는 비용이 많이 들 수 있다는 점에 유의하세요. 현재 Davinci 모델의 경우 1,000 토큰당 0.02달러인 것으로 알고 있습니다.
제 이해가 맞다면, Discourse용 ChatGPT를 처리하는 애플리케이션이나 Discourse 플러그인은 프롬프트에 각 새로운 질문과 답변을 추가해야 합니다. 4k 토큰(약 3,000단어)에 도달할 때까지 그렇게 할 수 있습니다. 이 제한을 초과하면 OpenAI에서 오류가 반환되는 것으로 보입니다. 이 오류는 OpenAI에 요청을 보내는 애플리케이션에서 처리되어야 합니다.
토큰 제한에 대한 가능한 우회 방법은 대화에서 주요 세부 정보를 추출하는 방법을 찾아 프롬프트를 해당 세부 정보로만 업데이트하는 것입니다. 사용자를 대신하여 이 정보를 얻기 위해 요청을 보내는 것이 가능할 수도 있습니다. 다음과 같은 요청을 보내는 것일 수 있습니다: