채팅은 사용자와 모델 사이의 모든 것을 담당합니다. respond 함수로 NuiChatSession을 만들면 나머지는 <nui-chat>이 처리합니다. 응답을 Markdown으로 스트리밍하고, 사용자가 위로 스크롤하기 전까지 응답을 따라 내려가며, 응답이 도착하는 동안에는 전송 버튼을 중지 버튼으로 바꿉니다.
respond는 텍스트, 프로미스, async function*, Observable 중 무엇이든 반환할 수 있어 어떤 API에도 맞출 수 있습니다. 응답에는 텍스트 외에도 모델의 추론, 도구 호출(직접 만든 템플릿으로 그림), 참고한 출처를 담을 수 있습니다. nuiEventStream은 대부분의 모델 API가 스트리밍하는 서버 전송 이벤트를 읽습니다.
잃어버리는 것은 없습니다. 다시 시도한 응답이나 수정한 질문은 이전 것 옆에 새 버전으로 남고, 대화는 모든 분기를 보존합니다. 스크린 리더는 각 응답을 한 단어씩 읽지 않고, 완료된 뒤에 읽어 줍니다.
어시스턴트
추천 프롬프트로 대화를 시작합니다. 응답은 Markdown으로 스트리밍되며, 중지하거나 다시 시도하거나 평가할 수 있고, 질문을 수정할 수도 있습니다. attach는 선택하거나 붙여 넣거나 끌어다 놓은 파일을 받습니다.
추론, 도구, 출처
델타가 모델의 추론, 도구 호출, 출처를 응답에 추가합니다. nuiChatTool은 날씨 도구를 카드로 그리고, 다른 도구는 입력과 출력을 담은 채 접혀 있습니다.
서버에서 스트리밍
nuiEventStream은 OpenAI 스타일의 이벤트 스트림을 읽고, NuiChatError는 그 메시지를 표시합니다. all()은 버전까지 포함해 대화 전체를 저장합니다.