gemma4:26b 가 본문 없이 이미지만 받으면 null 반환하는 한계 우회. prompt 강화 + null 금지 명시 만으로 부족. one-shot 예시 (강아지/화이트보드) 2개로 모델이 입출력 구조 따라가도록 유도. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
33 lines
1.4 KiB
TypeScript
33 lines
1.4 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { buildVisionPrompt } from '@main/ai/visionPrompt.js';
|
|
|
|
describe('buildVisionPrompt', () => {
|
|
it('includes text, todayKst, dueCandidates, and vocab slice when present', () => {
|
|
const result = buildVisionPrompt(
|
|
'회의 메모',
|
|
'2026-05-09',
|
|
['2026-05-10', '2026-05-15'],
|
|
['work', 'meeting', 'project', 'todo']
|
|
);
|
|
expect(result).toContain('회의 메모');
|
|
expect(result).toContain('2026-05-09');
|
|
expect(result).toContain('2026-05-10, 2026-05-15');
|
|
expect(result).toContain('work, meeting, project, todo');
|
|
});
|
|
|
|
it('본문 빈 경우 이미지 묘사 + null 금지 명시 + one-shot 예시 (v0.3.14+)', () => {
|
|
const result = buildVisionPrompt('', '2026-05-09', [], []);
|
|
expect(result).toContain('본문이 없습니다');
|
|
expect(result).toContain('null 반환 절대 금지');
|
|
expect(result).toContain('예시'); // one-shot 예시 포함
|
|
expect(result).toContain('잔디 위 강아지'); // 예시 1
|
|
expect(result).not.toContain('메모 본문:\n');
|
|
});
|
|
|
|
it('본문 있는 경우 본문 우선 + 이미지 함께 분석 명시', () => {
|
|
const result = buildVisionPrompt('회의 메모', '2026-05-09', [], []);
|
|
expect(result).toContain('메모 본문:\n회의 메모');
|
|
expect(result).toContain('첨부 이미지도 함께 분석');
|
|
});
|
|
});
|