001package org.nasdanika.ai; 002 003import java.util.Arrays; 004import java.util.List; 005 006public interface Chat extends Model { 007 008 interface Message { 009 010 String getRole(); 011 012 String getContent(); 013 014 static Message create(String role, String content) { 015 return new Message() { 016 017 @Override 018 public String getRole() { 019 return role; 020 } 021 022 @Override 023 public String getContent() { 024 return content; 025 } 026 027 }; 028 029 } 030 031 } 032 033 interface ResponseMessage extends Message { 034 035 String getRefusal(); 036 037 String getFinishReason(); 038 039 } 040 041 enum Role { 042 043 system, 044 assistant, 045 user, 046 function, 047 tool, 048 developer; 049 050 public Message createMessage(String content) { 051 return Message.create(name(), content); 052 } 053 054 } 055 056 List<ResponseMessage> chat(List<Message> messages); 057 058 default List<ResponseMessage> chat(Message... messages) { 059 return chat(Arrays.asList(messages)); 060 } 061 062 int getMaxOutputTokens(); 063 064}