ãã®ããã°ã§ã¯ãããŸããŸãª çæ AI ãæŽ»çšããããžãã¹ãŠãŒã¹ã±ãŒã¹ããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããŠãã Generative AI Use Cases JP ãã«ã¹ã¿ãã€ãºããæ¹æ³ã«ã€ããŠã玹ä»ããŸããAmazon BedrockãAmazon Kendra ãªã©ãå©çšããŠãGenerative AI Use Cases JP ã¯ããŸããŸãªããžãã¹ãŠãŒã¹ã±ãŒã¹ãå
¬éããŠããŸãã ãã® Generative AI Use Cases JP ã® Web UI ãå©çšããããšã§ç°¡åã«æ°ãããŠãŒã¹ã±ãŒã¹ã远å ããããšãå¯èœã§ãã ãã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã§ã¯ãSQL ãèšè¿°ããå·¥æ°ãåæžãããããŒã¿ã¢ããªã¹ããã¿ãŒã²ããã«ãAmazon Bedrock ã® åºç€ã¢ãã« ãçšããŠSQL ãçæãããŠãŒã¹ã±ãŒã¹ãäœæããŠã¿ãŸãã ä»åäœæãããŠãŒã¹ã±ãŒã¹ã§çšãã åºç€ã¢ã㫠㯠Claude v2 ãå©çšããŸãã ãŠãŒã¹ã±ãŒã¹ãäœæãå§ããåã«ãåºç€ã¢ãã« ã§ SQL ãçæå¯èœããã£ããã§ç¢ºèªãã ãŠãŒã¹ã±ãŒã¹ãäœæããåã«ããããã åºç€ã¢ãã« ãå©çšã㊠SQL çæãå¯èœãã©ããããã§ãã¯ããŸãã å
·äœçã«ã¯ããã£ããã§æå³ãã SQL ãçæã§ããããæ€èšŒããŠã¿ãŸãã ããã§ã¯ã人éãèšè¿°ããã®ãé¢åãªãé·ã Case æãèªç¶èšèªã§ç°¡åã«åºåã§ããã確èªããŠã¿ãŸãã SQL çæã®ããã« åºç€ã¢ãã« ã«å
¥åãã¹ãæ
å ± æçšãª SQL ãåºåããããã«å
¥åãã¹ãå¿
èŠãªæ
å ±ãæŽçããŠã¿ãŸãã ããŒãã«å®çŸ© åºç€ã¢ãã«ã¯ç€Ÿå
ããŒã¿ããŒã¹ã®ã¹ããŒãæ
å ±ãç¥ããŸããã åºç€ã¢ãã«ã«ããŒãã«å®çŸ©ãæž¡ããšåã«ã©ã ã® type ã rangeãã³ã¡ã³ã ãªã©ãåç
§ããŠæ£ç¢ºãª SQL ã®åºåãæåŸ
ã§ããŸãã åºåããã SQL ã説æããèªç¶èšèª æ®æ®µäœ¿çšããŠããèªç¶èšèªã§åºåãããã SQL ã説æããŸãã ãã£ããã«å
¥å ãã£ããã«å
¥åãã¹ãæ
å ± 1, 2 ã Claude v2 ã«å
¥åããŠãããŸãã ãŸãã¯åºç€ã¢ãã«ã«åœ¹å²ãšã¿ã¹ã¯ãäžãããããã·ã¹ãã ã³ã³ããã¹ãã«ä»¥äžãå
¥åããŸããã·ã¹ãã ã³ã³ããã¹ããšã¯ãClaude ã«è³ªåãããã¿ã¹ã¯ãäžããåã«ç¹å®ã®ç®æšã圹å²ãæå®ãããªã©ãClaude ã«ã³ã³ããã¹ããšæç€ºãæäŸããæ¹æ³ã§ãã詳现ã«ã€ããŠã¯ Anthoropic 瀟㮠ã·ã¹ãã ããã³ããã®äœ¿ç𿹿³ ãåç
§ããŠãã ããã ã·ã¹ãã ã³ã³ããã¹ã Claude2 ã«åœ¹å²ãšã¿ã¹ã¯ãäžãã 圹å²: ãŠãŒã¶ãŒã®æç€ºãããçè§£ããçç·Žã®ããŒã¿ããŒã¹ã¹ãã·ã£ãªã¹ã ã¿ã¹ã¯: ãå®ã£ãŠãå¯èªæ§ã®é«ã SQL ã ããåºåããŠãã ãã Claude2ãšããŠå©çšãã Claude ãçè§£ãããã XML ã¿ã°ãçšããŠèšè¿°ãããXML ã¿ã°ã¯èªç±ã«å®çŸ©ããŠããã RDB ã®ã¹ããŒãæ
å ±: <schemas></schemas> Claude v2 ã®åºåäŸ: <examples></examples> 以äžã¯ãŠãŒã¶ãŒãš AI ã®ãããšãã§ãã ãŠãŒã¶ãŒã¯ AI ã« <schemas></schemas> ã® xml ã¿ã°ã§å²ã£ãŠ RDB ã®ã¹ããŒãæ
å ±ãæž¡ããŸãã ããã«ã<input></input> ã® xml ã¿ã°ã§å²ã£ãŠ AI ã«èšè¿°ããŠæ¬²ãã SQL ã®èª¬æãæž¡ããŸãã AI ã¯ããŠãŒã¶ãŒã®æç€ºãããçè§£ããçç·Žã®ããŒã¿ããŒã¹ã¹ãã·ã£ãªã¹ããªã®ã§ã以äžã® <rules></rules> ãå®ã£ãŠãå¯èªæ§ã®é«ã SQL ã ããåºåããŠãã ããã <rules> * <schemas> ãš <input> ã®æ
å ±ãé Œãã«ããŠãŒã¶ãŒãæ±ãã SQL ã ANSI SQL ã«æºæ ããŠåºåããŠãã ããã * join ããå Žåã¯ããŒãã«åã«å¥åãã€ããäžã§ãååã¯å¿
ã `å¥å.åå` ãšè¡šèšããŠãã ããã * GROUP BY ã ORDER BY å¥ã«ã¯ãå¿
ã `åå` ããã㯠`å¥å.åå`ã䜿çšããããšãéµå®ããŠãã ãããåçªå·ã®äœ¿çšã¯ä¿®æ£ãé£ãããªãã®ã§çŠæ¢ã§ãã </rules> åºå㯠<output>```sql {SQL} ```</output> ã®åœ¢åŒãéµå®ããŠãã ããã SQL ã®ã³ãŒã以å€ãåºåããŠã¯ãããŸããã解説ãªã©ãåºåããŠã¯ãããŸããã åºåäŸã <examples></examples> ã§äžããŸãã <examples> <output>```sql SELECT * FROM v_schedule; ```</output> <output>```sql SELECT e.id AS employee_id, e.name AS employee_name, c.id AS company_id, c.name AS company_name FROM employees e JOIN companies c ON c.id = e.company_id ; ```</output> <output>```sql SELECT id, COUNT(price), SUM(price), MIN(price), MAX(price) FROM transaction t GROUP BY t.id ; ```</output> </examples> äžèšã®éãããŠãŒã¶ãŒã¯ <schemas> ãš <input> ãäžããã° Claude v2ã SQL ãåºåããŠãããã¯ãã§ããããã§ã¯ Amazon Athena ãåæãšãã DDL ãšãäœæããã SQL ã®å
容ããã£ããã«å
¥åããŸãã <schemas> CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, gender VARCHAR(10) NOT NULL, age SMALLINT NOT NULL, CONSTRAINT users_pk PRIMARY KEY (id) ); COMMENT ON COLUMN users.id IS 'ãŠãŒã¶ãŒID'; COMMENT ON COLUMN users.name IS 'ãã«ããŒã '; COMMENT ON COLUMN users.gender IS 'Male, Female, Other ã®ãããããæ ŒçŽ'; COMMENT ON COLUMN users.age IS '幎霢'; CREATE TABLE user_logs ( request_id BIGSERIAL PRIMARY KEY, request_time TIMESTAMP NOT NULL, url TEXT NOT NULL, id SERIAL NOT NULL REFERENCES users(id) ); COMMENT ON COLUMN user_logs.request_id IS 'ãã°ã¬ã³ãŒãã®ãŠããŒã¯ID'; COMMENT ON COLUMN user_logs.request_time IS 'ãªã¯ãšã¹ãããæå»'; COMMENT ON COLUMN user_logs.url IS 'ãªã¯ãšã¹ãããURL'; COMMENT ON COLUMN user_logs.user_id IS 'ãŠãŒã¶ãŒID'; </schemas> <input> å¹Žéœ¢ãšæ§å¥ã§å±€åããã屿§æ
å ±ã§ãå¹Žææ¯ã®ãªã¯ãšã¹ãåæ°ã®åèšãéèšããŠãã ããã 幎霢ã¯20æ³æªæºã20-29ã30-39ãâŠã70-79, 80以äžã§åããŠãã ããã æ§å¥ã¯ãMale, Female, Other ã§åããŠãã ããã </input> ãã£ãã UI äžã§ã¯ãã®ããã«è¡šç€ºãããŸãã ãã®ããã³ãããå©çšããŠSQL çæãŠãŒã¹ã±ãŒã¹ãäœæããŸãã SQL çæãŠãŒã¹ã±ãŒã¹ã®éçº ãã©ã³ããäœæãã ã¢ããªéçºãããäžã§ããŒãžã§ã³ç®¡çã¯å€§åã§ãã SQL çæã®ãŠãŒã¹ã±ãŒã¹ãäœæããããã«ãã©ã³ããäœæããŸãã 以äžã®ã³ãã³ãã䜿çšããŠãã ããã 以äžã®ã³ãã³ã㯠feat/generate-sql ãã©ã³ããäœæãããã®ããã°å·çæã®ææ°ã®ã³ããããæå®ããŠããŸã(Commit ID: 37b29d2 )ã â»æ³šæ) ããã°å·çæã¯äžèšã³ãŒããåããŸãããã¡ã³ããã³ã¹ãããŸããã®ã§ã泚æãã ããããã®ææç©ã¯åŸè¿°ã®éã main ãã©ã³ãã远åŸããªããã〠main ãã©ã³ãã«ãããŒãžãããŸãããã詊ããéçºã®ãã³ããšããŠã䜿ããã ããã git checkout -b feat/generate-sql git reset --soft `37b29d2` ããŒã«ã«éçºç°å¢ãç«ã¡äžãã ããã³ããšã³ãã®éçºãããã«ããããéçºç°å¢ãæŽããŸãã Generative AI Use Cases JP ããããã€ããŠããªãå Žåããã¡ãã® ãªã³ã¯ ãåèã«ããŠãŸãã¯ãããã€ããŠãã ããã ä»åã¯éçºäœéšãèæ
®ããŠãããŒã«ã«éçºçšãµãŒããŒãç«ãŠãããŒã«ã«ç°å¢ã§SQLçæãŠãŒã¹ã±ãŒã¹ã確èªã§ããããã«ããŸãã Unix ç³»ã³ãã³ãã䜿ããPC ã§ããã° (Linux ã MacOS ç)ã以äžã®ã³ãã³ãã§ããŒã«ã«ç°å¢ãç«ã¡äžããããŸãã npm run web:devw http://localhost:5173 ã«ã¢ã¯ã»ã¹ããã°ããŒã«ã«ã§éçºããããã³ããšã³ããããã«ç¢ºèªããããšãã§ããŸãã ã³ãã³ãã®èšå®ã«ã€ããŠã¯ /package.json ãåç
§ããŠãã ããã ã¡ãã¥ãŒã«è¿œå ãŸãã¯ãå°çšã®ãŠãŒã¹ã±ãŒã¹ã®ãªã³ã¯ãäœæããŸãã packages/web/src/App.tsx ã§ãŠãŒã¹ã±ãŒã¹ãªã³ã¯äžèЧãäœæããŠããã®ã§ã远èšããããšã§ SQL çæã®ãªã³ã¯ã远å ããããšãã§ããŸãã ã«ã¹ã¿ãã€ãºæ¹æ³ãšããŠãæ¬ããã°ã® Diff ãšæžãããå
容ã®äžã§ãè¡é ã« + ãããã°ãã®è¡ã远å ããè¡é ã« - ãããã°ãã®è¡ãåé€ããŠäžããã packages/web/src/App.tsx âŠ(åç¥)⊠PiX, + PiTerminal, } from 'react-icons/pi'; âŠ(äžç¥)⊠{ label: 'ç»åçæ', to: '/image', icon: <PiImages />, display: 'usecase' as const, }, + { + label: 'SQL çæ', + to: '/generate-sql', + icon: <PiTerminal />, + display: 'usecase' as const, + }, { label: 'é³å£°èªè', to: '/transcribe', icon: <PiSpeakerHighBold />, display: 'tool' as const, }, âŠ(åŸç¥)⊠ãªã³ã¯å
ãçšæãã äœæãããªã³ã¯ã¯åœç¶ååšããªãã®ã§ 404 ã衚瀺ãããŸãã ãŸãã¯ãªã³ã¯å
ãçšæããŸãããã packages/web/src/main.tsx ã§ãªã³ã¯å
ãèšå®ããŸãã packages/web/src/main.tsx âŠåç¥âŠ import GenerateImagePage from './pages/GenerateImagePage'; + import GenerateSqlPage from './pages/GenerateSqlPage'; import TranscribePage from './pages/TranscribePage'; âŠäžç¥âŠ path: '/image', element: <GenerateImagePage />, }, + { + path: '/generate-sql', + element: <GenerateSqlPage />, + }, { path: '/transcribe', element: <TranscribePage />, âŠåŸç¥âР以äžã§ã ã /generate-sql ãã¯ãªãã¯ãããšã㯠GenerateSqlPage.tsx ãåç
§ããããšããèšå®ãåºæ¥äžãããŸããã ãã ãã GenerateSqlPage.tsx ãç¡ããããç»é¢åŽã§ä»¥äžã®ãããªãšã©ãŒãçºçããŠããã¯ãã§ãã [plugin:vite:import-analysis] Failed to resolve import "./pages/GenerateSqlPage" from "src/main.tsx". Does the file exist? âŠåŸç¥âŠ ããŒãžãäœæãã ãããã SQL çæãŠãŒã¹ã±ãŒã¹ã®ããŒãžãäœæããŠãããŸãã SQL çæã®å Žåã¯ããããŒãã«ãå®çŸ©ãã DDLããå
¥åãããã©ãŒã ãšãããã®ããŒãã«ããã¯ãšãªãçæããããã®æç€ºããå
¥åãããã©ãŒã ã®äºã€ãå¿
èŠãšãªããŸãããã§ã«ææžçæãŠãŒã¹ã±ãŒã¹ã§åæ§ã® UI ãäœæãããŠããããããã¡ãã®ããŒãžã® UI ããã®ãŸãŸå©çšããŠäœæããŠãããŸãã 以äžã³ãã³ãã§ãææžçæã®ããŒãžãè€è£œããŸãã # ãããžã§ã¯ãã®ã«ãŒããã£ã¬ã¯ããªã§å®è¡ cp packages/web/src/pages/GenerateTextPage.tsx packages/web/src/pages/GenerateSqlPage.tsx è€è£œããã packages/web/src/pages/GenerateSqlPage.tsx ãç·šéããŠãããŸãã packages/web/src/pages/GenerateSqlPage.tsx âŠåç¥âŠ import { create } from 'zustand'; + import { generateSqlPrompt } from '../prompts'; + import { GenerateSqlPageLocationState } from '../@types/navigate'; - import { generateTextPrompt } from '../prompts'; - import { GenerateTextPageLocationState } from '../@types/navigate'; import { SelectField } from '@aws-amplify/ui-react'; âŠäžç¥âŠ clear; () => void; }; + const useGenerateSqlPageState = create<StateType>((set) => { - const useGenerateTextPageState = create<StateType>((set) => { const INIT_STATE = { âŠäžç¥âŠ }; }); + const GenerateSqlPage: React.FC = () => { - const GenerateTextPage: React.FC = () => { const { modelId, âŠäžç¥âŠ setText, clear, + } = useGenerateSqlPageState(); - } = useGenerateTextPageState(); const { state, pathname } = + useLocation() as Location<GenerateSqlPageLocationState>; - useLocation() as Location<GenerateTextPageLocationState>; const { loading, messages, postChat, clear: clearChat } = useChat(pathname); const { setTypingTextInput, typingTextOutput } = useTyping(loading); âŠäžç¥âŠ useEffect(() => { if (state !== null) { + setInformation(state.schemas); + setContext(state.instruction); - setInformation(state.information); - setContext(state.context); } }, [state, setInformation, setContext]); âŠäžç¥âŠ } }, [modelId, availableModels, setModelId]); + const getGeneratedSql = ( - const getGeneratedText = ( modelId: string, + schemas: string, + instruction: string - information: string, - context: string ) => { postChat( + generateSqlPrompt.generatePrompt({ + schemas, + instruction, - generateTextPrompt.generatePrompt({ - information, - context, }), true, textModels.find((m) => m.modelId === modelId) âŠäžç¥âŠ const onClickExec = useCallback(() => { if (loading) return; + getGeneratedSql(modelId, information, context); - getGeneratedText(modelId, information, context); }, [modelId, information, context, loading]); âŠäžç¥âŠ <div className="grid grid-cols-12"> <div className="invisible col-span-12 my-0 flex h-0 items-center justify-center text-xl font-semibold print:visible print:my-5 print:h-min lg:visible lg:my-5 lg:h-min"> + SQL çæ - æç« çæ </div> <div className="col-span-12 col-start-1 mx-2 lg:col-span-10 lg:col-start-2 xl:col-span-10 xl:col-start-2"> âŠäžç¥âŠ <Textarea + placeholder="SQL çæã«å¿
èŠãªããŒãã«æ
å ± (create table DDL) ãå
¥åããŠãã ãã" - placeholder="å
¥åããŠãã ãã" value={information} âŠäžç¥âŠ <Textarea + placeholder="çæãã SQL ã®èª¬æãå
¥åããŠãã ããã" - placeholder="æç« ã®åœ¢åŒãæç€ºããŠãã ããã(ããŒã¯ããŠã³ãããã°ãããžãã¹ã¡ãŒã«ãªã©)" value={context} âŠäžç¥âŠ + export default GenerateSqlPage; - export default GenerateTextPage; ããã§ã¯ä»¥äž 2 ç¹ã®ä¿®æ£ãäž»ã«ããŠããŸãã ç»é¢ã§è¡šç€ºãããŠããææžçæçšã®èª¬ææååã SQL çæçšã«ä¿®æ£ããŠããŸãã å
éšã§å©çšããŠãã倿°åãææžçæãã SQL çæçšã«ä¿®æ£ããŠããŸãããã®å€æŽã¯ãå®éã«éçšããŠããã«ãããå¯èªæ§ãä¿å®æ§ãäžãããšèšã芳ç¹ã§ä¿®æ£ããŠããŸãã ãã ãã倿°åã倿Žããããšã«ãã£ãŠãä»ã«å€æ°ãå®çŸ©ã»å©çšããŠããéšåã§ TypeScript ã®ãšã©ãŒã以äžã®ããã«çºçããŠããŸãã [{ "resource": "generative-ai-use-cases-jp/packages/web/src/pages/GenerateSqlPage.tsx", "owner": "typescript", "code": "2305", "severity": 8, "message": "ã¢ãžã¥ãŒã« '\"../prompts\"' ã«ãšã¯ã¹ããŒããããã¡ã³ã㌠'generateSqlPrompt' ããããŸããã", "source": "ts", "startLineNumber": 11, "startColumn": 10, "endLineNumber": 11, "endColumn": 27 },{ "resource": "generative-ai-use-cases-jp/packages/web/src/pages/GenerateSqlPage.tsx", "owner": "typescript", "code": "2724", "severity": 8, "message": "'GenerateSqlPageLocationState' ãšããååã®ãšã¯ã¹ããŒããããã¡ã³ããŒã '\"../@types/navigate\"' ã«å«ãŸããŠããŸãããåè£: 'GenerateTextPageLocationState'", "source": "ts", "startLineNumber": 12, "startColumn": 10, "endLineNumber": 12, "endColumn": 38 }] 倿°å®çŸ©ã®ä¿®æ£ packages/web/src/pages/GenerateSqlPage.tsx ã§äœ¿çšããŠããã schemas 倿°ãš instruction 倿°ã®å®çŸ©ãè¡ããŸãã ããã¯ãããåå®å
šã«ããããã« ReactRouter ã® useLocation ã«åå®çŸ©ãè¡ã£ãŠããŸãã packages/web/src/@types/navigate.d.ts context: string; }; + export type GenerateSqlPageLocationState = { + schemas: string; + instruction: string; + }; export type RagPageLocationState = { content: string; ã·ã¹ãã ã³ã³ããã¹ããšãŠãŒã¶ãŒããã³ããã®åã蟌㿠æåŸã«çšæããããã³ããã SQL çæãŠãŒã¹ã±ãŒã¹ã®ããŒãžã«ãé©çšãããŸãã prompt ã¯ã packages/web/src/prompts/index.ts ã§å¶åŸ¡ããŠããŸãã ãã®ãã¡ã€ã«ã¯åããŒãžã®ã³ã³ããã¹ããå®çŸ©ããŠããŸãããã®ãã¡ã€ã«ã«å
ã»ã©äœæããã·ã¹ãã ã³ã³ããã¹ããå®çŸ©ãããŠãŒã¶ã®å
¥åãåãåããClaude v2 ã«å
¥åããããã®ããã³ãããäœæããããã®åŠçã远å ããŸãã packages/web/src/prompts/index.ts âŠåç¥âŠ '/generate': 'ããªãã¯æç€ºã«åŸã£ãŠæç« ãäœæããã©ã€ã¿ãŒã§ãã', + '/generate-sql': `以äžã¯ãŠãŒã¶ãŒãš AI ã®ãããšãã§ãã + ãŠãŒã¶ãŒã¯ AI ã« <schemas></schemas> ã® xml ã¿ã°ã§å²ã£ãŠ RDB ã®ã¹ããŒãæ
å ±ãæž¡ããŸãã + ããã«ã<input></input> ã® xml ã¿ã°ã§å²ã£ãŠ AI ã«èšè¿°ããŠæ¬²ãã SQL ã®èª¬æãæž¡ããŸãã + AI ã¯ããŠãŒã¶ãŒã®æç€ºãããçè§£ããçç·Žã®ããŒã¿ããŒã¹ã¹ãã·ã£ãªã¹ããªã®ã§ã以äžã® <rules></rules> ãå®ã£ãŠãSQL ã ããåºåããŠãã ããã + <rules> + * <schemas> ãš <input> ã®æ
å ±ãé Œãã«ããŠãŒã¶ãŒãæ±ãã SQL ã ANSI SQL ã«æºæ ããŠåºåããŠãã ããã + * join ããå Žåã¯ããŒãã«åã«å¥åãã€ããäžã§ãååã¯å¿
ã \`å¥å.åå\` ãšè¡šèšããŠãã ããã + * GROUP BY ã ORDER BY å¥ã«ã¯ãå¿
ã \`åå\` ããã㯠\`å¥å.åå\`ã䜿çšããããšãéµå®ããŠãã ãããåçªå·ã®äœ¿çšã¯ä¿®æ£ãé£ãããªãã®ã§çŠæ¢ã§ãã + </rules> + åºå㯠+ <output>```sql + {SQL} + ```</output> + ã®åœ¢åŒãéµå®ããŠãã ããã + SQL ã®ã³ãŒã以å€ãåºåããŠã¯ãããŸããã解説ãªã©ãåºåããŠã¯ãããŸããã + åºåäŸã <examples></examples> ã§äžããŸãã + + <examples> + <output>```sql + SELECT * FROM v_schedule; + ```</output> + <output>```sql + SELECT + e.id AS employee_id, + e.name AS employee_name, + c.id AS company_id, + c.name AS company_name + FROM + employees e + JOIN + companies c ON c.id = e.company_id + ; + ```</output> + <output>```sql + SELECT + id, + COUNT(price), + SUM(price), + MIN(price), + MAX(price) + FROM + transaction + GROUP BY + id + ; + ```</output> + </examples> + `, '/translate': 'ããªãã¯æç« ã®æå³ãæ±²ã¿åãé©åãªç¿»èš³ãè¡ã翻蚳è
ã§ãã', âŠäžç¥âŠ + export type GenerateSqlParams = { + schemas: string; + instruction: string; + }; + export const generateSqlPrompt = { + generatePrompt: (params: GenerateSqlParams) => { + return `<schemas> + ${params.schemas} + </schemas> + <input> + ${params.instruction} + </input>`; + }, + }; <EOF> ãã®ã³ãŒãã§è¡ã£ãŠããããšã¯ä»¥äžã® 2 ã€ã§ãã å
çšäœæãã prompt ã倿°ã«æ ŒçŽ å
¥åãããããã¹ããåãåã£ãŠã <schemas> ã <input> ã¿ã°ã«åã蟌ã åäœç¢ºèª æåŸã«ãåäœç¢ºèªãããŸãã æ¬ããã°äžéšã§å
¥åãã DDL ( <schemas> ã¿ã°ã®å
åŽã®ããã¹ã )ãšãå®çŸ©ãã ããŒãã«ã§çæããã SQL ( <input> ã¿ã°ã®å
åŽã®ããã¹ã) ãå
¥åããŸãã å®è¡ãã¿ã³ãã¯ãªãã¯ãããšã次ã®ãã㪠SQL ãçæãããŸãã ãã®ããã«æ¢åã® API ãå©çšããŠç°¡åã« ãŠãŒã¹ã±ãŒã¹ ã远å ããããšãã§ããŸããã API ãããããããªã±ãŒã¹ã¯ãŸãå¥ééçºãå¿
èŠã§ãããæ¢åã® UI ãæµçšã㊠ãŠãŒã¹ã±ãŒã¹ã远å ããã ãã§ããã°ãã®ããã«ç°¡åã«äœæããããšãã§ããŸãã ãŸãšã æ¬èšäºã§ã¯ãGenerative AI Use Cases JP ã®æ¢åã® UI ãAPI ãå©çšããŠããŠãŒã¹ã±ãŒã¹ã远å ããæ¹æ³ã«ã€ããŠã玹ä»ããŸãããææžçæããŒãžãæµçšããŠãSQL çæããŒãžãäœæããŸãããããŒãžè¿œå ã®æ¹æ³ããã·ã¹ãã ã³ã³ããã¹ãã®å€æŽæ¹æ³ãªã©ã䜵ããŠç޹ä»ããŸãããSQL çæãŠãŒã¹ã±ãŒã¹ãšããŠãå®éã«ã¯ããŒãã«å®çŸ©ãæ¯åæžãã®ã¯å€§å€ã§ãããã®ãããäŸãã°ååæžããããŒãã«å®çŸ©ãlocalStorage çã«ä¿åã§ããããã«ããæ¬¡åå©çšæã«ã¯èªåã§å
¥åãããç¶æ
ã®æ¹ã䟿å©ãããããŸãããããã«çºå±ããDB ãããŒãã«äžèЧã API ã§ååŸãããŒãã«å®çŸ©ãèªåã§ã€ã³ããŒãã§ããããã«ãªããšãå©äŸ¿æ§ãæ Œæ®µã«åäžããŸãããã®ããã«ãä»åã® SQL çæãŠãŒã¹ã±ãŒã¹äžã€ããšã£ãŠãããŸã ãŸã æ¡åŒµã®äœå°ããããŸãã ä»åã®ã«ã¹ã¿ãã€ãºã®æ¹æ³ãããšã«ããŠãç¬èªã®ãŠãŒã¹ã±ãŒã¹ãäœæããŠã¿ãŸãããã ãã®èšäºã®ã³ãŒããµã³ãã«ã«ã€ããŠã¯ã GitHub ãªããžããªãã芧ãã ããã èè
ãããã£ãŒã« å åä» (Go Kazuhito) 㯠AWS Japan ã®æ©æ¢°åŠç¿ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãã IoT ã® DWH éçºãããŒã¿ãµã€ãšã³ãã£ã¹ãå
Œæ¥åã³ã³ãµã«ã¿ã³ããçµãŠçŸè·ãããã°ã©ãã®äžå€§çŸåŸ³ã§ããæ æ°ã ããæ¥µããŠããŸããã¢ãã«æ§ç¯ãæ ãããã AWS ã® AI ãµãŒãã¹ããããªãæãã éŽæš 倧暹 (Daiki Suzuki) ã¯AWS Japan ã®ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ããããŒã¿ããŒã¹é åãåŸæãšããŠãããæ©æ¢°åŠç¿é åãšçµ¡ãããœãªã¥ãŒã·ã§ã³ã®äœæãè¡ãªã£ãŠããŸãã