Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: 퀘스트 달성바 안보이는 거 수정 & 거절 프롬프트 길이 제한 #14

Merged
merged 1 commit into from
Sep 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions lib/data/service/conversation_analysis_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@ class ConversationAnalysisService {
defaultOptions: const ChatOpenAIOptions(
temperature: 0.8,
model: 'gpt-4-turbo',
maxTokens: 600,
maxTokens: 300,
),
);

// 프롬프트 넣기
final conversationAnalysisPrompt = ChatPromptTemplate.fromTemplate('''
당신은 다음의 대화 기록들과 사용한 거절 방법, 미달성 퀘스트를 보고, 사용자의 대화 능력을 평가해야합니다. 부탁을 거절하는 능력을 평가하고자 합니다.
사용자는 중학생 정도로 그들이 이해할만한 부드러운 언어로 평가합니다. 간혹가다 이모티콘도 써주세요.
대화 기록에선 사용자의 'userMessage' 에 대한 ai의 반응인 'text', 'feeling', 'affinityScore' 가 있으며, 'userMessage' 에서 사용된 거절 방법이 'rejection_content' 으로 그리고 거절 점수가 'rejection_score' 로 나타납니다.
대화 기록에서 'userMessage' 기록들을 보고 유저의 거절 능력을 평가해주세요.

Expand All @@ -39,9 +40,9 @@ class ConversationAnalysisService {
[미달성 퀘스트]
{quest}

답변으로 'evaluation'(string), 'usedRejection'(string) 을 반드시 JSON 객체로 리턴하세요. (\```json 로 시작하는 문자열을 생성하지 마세요)
답변으로 'evaluation'(string), 'usedRejection'(string) 을 반드시 JSON 객체로 리턴하세요. (\```json 로 시작하는 문자열을 생성하지 마세요. 전체는 260자 이내로 출력되어야합니다.)

'evaluation'은 사용자의 대화 능력을 AI의 입장에서 500자 이내로 평가한 문자열입니다. (string)
'evaluation'은 사용자의 대화 능력을 AI의 입장에서 180자 이내로 평가한 문자열입니다. (string)
'evalution' 은 사용자의 대화능력을 평가할 뿐 아니라 사용자의 대화 능력을 개선할 수 있는 피드백을 제공해야합니다.
대화 기록에서 인용할 만한 텍스트가 있다면 직접적으로 인용하여 지적 및 칭찬을 해주세요. 또한, 대화 기록에서 사용자의 말이 character 의 감정을 상하게 할 부분이 있거나,
사용자가 과하게 자기 표현을 못하는 경우에 이를 지적해주세요.
Expand Down
3 changes: 2 additions & 1 deletion lib/data/service/rejection_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class RejectionService {
final rejectionPrompt = ChatPromptTemplate.fromTemplate('''
당신은 주어진 message를 바탕으로 거절 카테고리를 출력하는 역할을 합니다.
message가 주어지면, 해당 내용에 따라 거절 카테고리를 반환하세요.
부탁을 수락한 경우는 어떠한 카테고리에도 속하지 않습니다.

message : {message}

Expand All @@ -42,7 +43,7 @@ class RejectionService {
무시하거나 냉담한 반응: ("내가 왜 신경 써야 해?", "알아서 해" 등)
비꼬는 태도: ("네가 그걸 할 수 있다고?" 등)
불성실한 대답: ("몰라", "어쩔핑" 등)
이유 없는 거절: ("안 돼", "안 할래" 등 단순히 거절만 표현하고 구체적인 이유를 제공하지 않는 경우)
이유 없는 거절: ("안 돼", "안 할래" 등 단순히 거절만 표현하고 구체적인 이유를 제공하지 않는 경우 )
원인을 상대로 돌리기: ("네가 잘못했으니까 안 도와줄 거야" 등)
주제에서 벗어난 말: ("저녁 뭐 먹지?" 등)
세 글자 이하의 성의 없는 답변: ("응", "그래" 등)
Expand Down
2 changes: 1 addition & 1 deletion lib/data/service/response_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class ResponseService {

{persona}

당신은 'message', 'isEnd'을 반드시 JSON 객체로 리턴하세요.
당신은 'message', 'isEnd'을 반드시 JSON 객체로 리턴하세요. (\```json 로 시작하는 문자열을 생성하지 마세요)

- message: 메시지 내용을 나타냅니다. (string)
- isEnd : 만약 user의 마지막 말이 부탁에 대한 수락이라면 바로 isEnd 를 true로 설정하시오. default 값은 false 입니다. 만약 isEnd 가 false이라면 물러서지 않고 계속 부탁합니다.(bool)
Expand Down
13 changes: 6 additions & 7 deletions lib/presentation/screens/chatting/controller/chat_viewmodel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -216,14 +216,13 @@ class ChatViewModel extends GetxController {
String questContent = questContentMap[character.name]?[questIndex] ?? '알 수 없는 퀘스트';

// 퀘스트 달성 메시지 출력
Fluttertoast.showToast(
msg: "퀘스트 달성! $questContent",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.TOP_RIGHT,
timeInSecForIosWeb: 2,
Get.snackbar(
"퀘스트 달성!",
"퀘스트 달성! $questContent",
snackPosition: SnackPosition.TOP,
backgroundColor: Colors.blue[700],
textColor: Colors.white,
fontSize: 16.0,
colorText: Colors.white,
duration: Duration(seconds: 2),
);
}
}
Expand Down
2 changes: 1 addition & 1 deletion lib/presentation/screens/feedback/view/feedback_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class FeedbackView extends StatelessWidget {
children: [
// 고정된 높이의 스크롤 가능한 영역
SizedBox(
height: 0.8.sh, // 화면 높이의 70%
height: 0.75.sh, // 화면 높이의 70%
child: SingleChildScrollView(
padding: const EdgeInsets.all(16.0),
child: Column(
Expand Down
Loading