第2å ããã³ãããåå©çšãããããªã»ããã¹ãã¢ãšå ±ææ©èœ
æ¬ãšã³ããªã¯Ubie çæAI Advent Calendar 2024ã®5æ¥ç®ãã瀟å çšçæAI Webã¢ããªã±ãŒã·ã§ã³ãã©ã®ããã«äœã£ãŠããããã®ç¬¬2åã§ãã
ååã¯ã瀟å çšçæAI Webã¢ããªã±ãŒã·ã§ã³ãDev Geniusããéçºããèæ¯ã«ã€ããŠç°¡åã«èª¬æããŸãããä»åã¯ãDev Geniusã®äž»èŠãªæ©èœã®1ã€ã§ãããããªã»ããã¹ãã¢ãã«ã€ããŠè§£èª¬ããŸãã
ããªã»ããã¹ãã¢ãšã¯
ããªã»ããã¹ãã¢ã¯ãDev Geniusã®æåæã®æ©èœã®1ã€ã§ãå©çšè ãäœæããã·ã¹ãã ããã³ãããä¿åã管çãåå©çšãå ±æã§ããŸããããã«ãããç®çã«å¿ããæé©ãªããã³ãã矀ãçµç¹ã§ååããªããæ§ç¯ã§ããŸãããšã³ã¿ãŒãã©ã€ãºåãã®çæAI SaaSã«ãå€§æµæèŒãããŠããæ©èœã§ãã

æè¿ã®ãã®ã¯æ¥åã«çŽçµãããã®ãå€ãèŠããããªãã®ã§å€ããã®ã...
ããªã»ããã¹ãã¢ãå®çŸãã
ã·ã¹ãã ããã³ãããä¿åãããšããã ããªã®ã§ãå®çŸãã®ãã®ã«çæAIã¯å¿ èŠãããŸãããåçŽãªããŒã¿ããŒã¹æ§é ã§ååã§ããããŒãã«ã®äŸã¯ä»¥äžã®éãã§ãã
-- PostgreSQL
CREATE TABLE public.presets (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
title TEXT NOT NULL,
system_prompt TEXT NOT NULL, -- ã·ã¹ãã ããã³ãã
guidance TEXT, -- äœ¿ãæ¹
user_id UUID NOT NULL REFERENCES public.users(id) ON DELETE RESTRICT ON UPDATE CASCADE, -- ããªã»ããã®å¶äœè
created_time TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_time TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP NOT NULL,
deleted_time TIMESTAMP(3),
visibility_level TEXT DEFAULT 'private' NOT NULL, -- private, publicãªã©
edit_access_level TEXT DEFAULT 'private' NOT NULL, -- private, publicãªã©
default_use_model TEXT
default_temperature DOUBLE PRECISION DEFAULT 0.0 NOT NULL,
);
ç¹åŸŽçãªã®ã¯default_use_modelãšdefault_temperatureãããããªãšæããŸãã
- default_use_model
- ããªã»ãããå©çšããããã©ã«ãã®LLMã¢ãã«åã§ããLLMã¢ãã«ã«ãã£ãŠåŸæäžåŸæãã³ã¹ããé床ãæå€§å ¥åéãæå€§åºåéãæ±ããã¡ãã£ã¢ãªã©ãç°ãªããŸããããªã»ããã®æ§è³ªã«ãã£ãŠæé©ãªã¢ãã«ãå€ãã£ãŠããã®ã§ãããªã»ããåŽã«èšå®ãæãããŠããŸãã
- default_temperature
- ããªã»ãããå©çšããããã©ã«ãã®temperatureã§ããtemperatureã¯çæããããã¹ãã®ã©ã³ãã æ§ãšåµé æ§ã«åœ±é¿ãäžããã®ã§ãããªã»ããã®ç®ç次第ã§èšå®ã®ä»æ¹ãå€ãããŸããããªã»ããåŽã«æãããã®ãè¯ãã§ãããã
visibility_level, edit_access_levelã¯ããããããªã»ããã®å¯èŠæ§ãšãç·šéæš©éã衚ããŠããŸãããããªãç°¡æãªãã®ã§ãããã现ãããªã¢ã¯ã»ã¹ã³ã³ãããŒã«ãããã«ã¯IAMã®æŠå¿µã«æºããä»çµã¿ãæ€èšããã®ãããããªãšæããŸãã åçŽã«ãèªåã ãã§å©çšããããä»è
ã«å
±æããããå¶åŸ¡ããã ãã§ããã°ããããã£ãç°¡æãªäœãã§åå詊ããã§ãããã
ããã³ãããåå©çšå¯èœã«ãã
ããªã»ããã®äœæãæŽæ°ã¯åçŽãªCRUDãªã®ã§ããã§ã¯å²æããŸããäœæããããªã»ããããã£ããã»ãã·ã§ã³ã§åŒã³åºããããã«ããã°ãããã³ãããç°¡åã«åå©çšã§ããããã«ãªããŸãã
Dev Geniusã§ã¯ããã£ããã®ã»ãã·ã§ã³éå§æã«ããªã»ããã®ã¿ã°äžèЧã衚瀺ããã¯ã³ã¿ããã§ã»ããã§ããããã«ããŠããŸãã

ã·ã¹ãã ããã³ãããã¢ãã«ãtemperatureãã¯ã³ã¿ããã§åãæ¿ãã
ã·ã¹ãã ããã³ããã®å 容ã¯åºå®ã«ã¯ãããããªã»ãããå©çšããå Žåã§ããã€ã§ããšãã£ããå¯èœã«ããŠããŸããããªã»ããããã¥ãŒãã³ã°ãããå Žåã®ãã©ã€ã¢ã³ããšã©ãŒãç°¡åã«ããããã§ãã
ããã³ãããåå©çšãã䟡å€
ããã³ãããåå©çšãããšãçæAIã«å¯ŸããŠç¹å®ã®ã³ã³ããã¹ããç°¡åã«äžããããšãã§ããããç確ãªå¿çãåŸããããªããŸãããã®çµæãå©çšè ã¯æåããç®çã«æ²¿ã£ãã³ãã¥ãã±ãŒã·ã§ã³ãåãããšãã§ããŸãã
äŸãã°æ±çšçãªã·ã¹ãã ããã³ããã§äŒè©±ããå ŽåãTypeScriptã§ããã€ãã®ãã£ãŒã«ããæã€classã宣èšããããšãããšãTypeScriptã§id, name, emailãæã€classã宣èšããããšãã£ãåœ¢ã§æç€ºããããšã«ãªããŸãã

ãããŸãæ®æ®µTypeScriptã§classã宣èšããããšãªããªãšæã£ãã
id, name, emailãæã€classãšãã£ãææ§ãªè¡šçŸã ãšã以äžã®ããã«ã¢ãã«ã®è§£éã«äŸåããåºåã«ãªããŸãã

LLMã¢ãã«ã¯PythonåŸæãã¡
äžæ¹ãç¹å®ã®ã¿ã¹ã¯ãç¶æ³ã«æé©åãããããã³ãããåå©çšããã°ãäºåã«ã³ã³ããã¹ããçæAIã«æäŸã§ããããããŠãŒã¶ãŒã¯ããç°¡æœãªæç€ºã§æžãããã«ãªããŸãã

é©åœã«æžããŠãå²ãšãããªã«ããŠããã
瀺ããäŸã¯ç°¡æœãªãã®ã§ãããããæ¥åã«ç¹åããå 容ããå°éç¥èãå¿ èŠãªãã®ãªã©ã«é¢ããããã³ããããããããããªã»ããåããŠããããšã§ãçæAIãšã®å¯Ÿè©±éãæžããã€ã€ææç©ãæå€§åã§ããŸãã
ããã³ãããå ±æãã
ããã³ããã®åå©çšã¯åŒ·åã§ãããå人çšã«çãŸã£ãŠããéã¯å¹æã¯éå®çã§ããããŒã ãçµç¹å ã§å ±æããããšã§ãæ¥åããã»ã¹ã«ã€ã³ãã¯ãã®ããããªã»ããã®æ§ç¯ãå¯èœã«ãªããŸããå®éã«Ubieã«ãããŠæ¥åããã»ã¹ã«çµã¿èŸŒãŸããŠãããããªããªã»ããã¯èŠããããªãã®ã§ãå°éé åã«ç¹åããããªã»ãããäžéšç޹ä»ããŸãã
以äžã¯ã€ã³ãã»ããŒã«ã»ã³ã®10ãã¥ãŒãªã¹ãã£ãã¯ã¹ãšããŠç¥ããããŠãŒã¶ããªãã£ååã«åºã¥ããã¬ãã¥ãŒãè¡ãããªã»ãããçšããŠãç»é¢ã®ã¬ãã¥ãŒãè¡ã£ãŠããã£ãäŸã§ãããã¶ã€ããŒã®ã¡ã³ããŒãäœã£ãŠãããŸãããç»é¢ãã£ããã£ã§ã®ã¬ãã¥ãŒãªã®ã§ãå¿
ãããæ£ç¢ºãªãã£ãŒãããã¯ãåŸãããããã§ã¯ãããŸãããã瀺åãåŸãããããšã¯å€ãã§ãã
| ç»é¢ã®ãã£ãã㣠| ã¬ãã¥ãŒçµæ |
|---|---|
![]() |
![]() |
次ã®äŸã§ã¯ãGithubã®Pull Requestã®å·®åã䜿ã£ãŠã³ãŒãã¬ãã¥ãŒãããŠããŸãã


ã»ã«ãã¬ãã¥ãŒãšããŠãããçšããããšã§ã人éã«ããã¬ãã¥ãŒã®è² æ ãæžãããŸãããã£ããã§è¡ã£ãŠããã®ã§ããã®ãŸãŸãŠããããã¹ãã®ææ¡ããQAãã¹ãèšç»ã«ã€ããŠãçžè«ã§ããŸãã
äŒè©±ããããªã»ãããçæãã
ããªã»ããã¯äŸ¿å©ã§ãããããªã»ãããäœãåºãã®ã¯ç°¡åã§ã¯ãããŸãããããã§ããã£ããå 容ã«åºã¥ããŠã·ã¹ãã ããã³ãããçæããæ©èœãèšããŠããŸãã
以äžã¯ãKPTã®ãŸãšããè¡ã£ããã£ããã®äŒè©±å±¥æŽãããããªã»ãããäœæããæ§åã§ãã

Structured Outputsã®ä»çµã¿ãçšããŠã以äžã®æ§ãªããŒã¿æ§é ãçæAIã«åºåããŠããã£ãŠããŸããããã«ãã£ãŠçæçµæã䜿ã£ãŠãã©ãŒã ã®åé ç®ãåããŠããŸãã
import { z } from "zod";
export const presetMagicSchema = z
.object({
title: z.string().describe("ããªã»ããã®åå"),
systemPrompt: z.string().describe("ã·ã¹ãã ããã³ãã"),
guidance: z.string().describe("ã·ã¹ãã ããã³ããã®äœ¿ãæ¹"),
})
.describe("ã·ã¹ãã ããã³ããäœæã®ã¹ããŒã");
ãã®ã»ããã·ã¹ãã ããã³ãããæé©åããããªã»ãããªã©ãããããã广çãªåºåãåŸãããã®æ¯æŽæ©èœãæŽããŠããŸãã
ãŸãšã
ããã³ããã®åå©çšã¯ãçæAIã广çã«æŽ»çšããäžã§éèŠãªèŠçŽ ã§ããé©åãªããã³ããã䜿ãããšã§ãçæAIãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã®è³ªãåäžããããè¯ãææç©ãå¹ççã«äœæã§ããããã«ãªããŸããèªåã§äœãå Žåããã¢ã¯ã»ã¹ã³ã³ãããŒã«ä»¥å€ã®éšåã¯ã·ã³ãã«ãªã®ã§ãæ¯èŒçç°¡åã«å®çŸã§ããã®ã§ã¯ãªãããšæããŸãã
Ubieæ ªåŒäŒç€Ÿã®ããã¯ããã°ã§ãã æ¡çšæ å ±ïŒrecruit.ubie.life


Discussion