# v7: Vertex AI (Gemini) $  t Freee p D 1<\ 8,  ȵ. L Ĕ GoogleX **Vertex AI**| X  p| <\ tL\ XX AI 0D X . t 줸 Vertex AI| $X, TypeScript Gemini xD X p D X 0 lp| . ## 1: Google Cloud \ Ux Vertex AI| X$t Google Cloud \ Di. v2 Google Sheets API| \1T` L 1\ D D \ `  . D  |(`credentials/freee-sheets-service-key.json`)D UxX \ ID| >: ```bash cat credentials/freee-sheets-service-key.json | grep "project_id" ``` % : ```json "project_id": "spatial-cargo-456805-u2" ``` t \ ID| 0tP8. ## 2: Vertex AI API \1T  Billing $ 1. **Vertex AI API \1T**: - Google Cloud Console https://console.cloud.google.com/apis/library/aiplatform.googleapis.com )8 - \| X " $" t 2. **Billing \1T** (D): - Vertex AI APIt\ Billing D t| i - https://console.cloud.google.com/billing  Billing \1T - 4 l't ## 3: Vertex AI SDK $X \ Vertex AI SDK| $Xi: ```bash npm install @google-cloud/vertexai ``` ## 4: `.env` | pt `.env` | D  \| i (t t Ux): ```ini # .env | ... GOOGLE_SERVICE_ACCOUNT_KEY_PATH="./credentials/freee-sheets-service-key.json" ``` ## 5: Vertex AI t|t 1 `src/vertexAiClient.ts` |D 1X Vertex AI \D li: ```typescript // src/vertexAiClient.ts import { VertexAI } from '@google-cloud/vertexai'; import * as path from 'path'; import * as dotenv from 'dotenv'; dotenv.config(); const GOOGLE_SERVICE_ACCOUNT_KEY_PATH = process.env.GOOGLE_SERVICE_ACCOUNT_KEY_PATH; if (!GOOGLE_SERVICE_ACCOUNT_KEY_PATH) { throw new Error('X  GOOGLE_SERVICE_ACCOUNT_KEY_PATH $ JX.'); } // Google Cloud \ $ const PROJECT_ID = 'spatial-cargo-456805-u2'; //  \ ID\ const LOCATION = 'asia-northeast1'; // \m/| L  // Vertex AI 0T const vertexAI = new VertexAI({ project: PROJECT_ID, location: LOCATION, googleAuthOptions: { keyFilename: path.resolve(GOOGLE_SERVICE_ACCOUNT_KEY_PATH), }, }); // Gemini x $ const model = vertexAI.getGenerativeModel({ model: 'gemini-2.5-pro', // \ Gemini x }); console.log(' Vertex AI t|t 0Tȵ.'); ``` ## 6: \ L Vertex AI t \ Ȕ UxX0 t \ L h| i: ```typescript // src/vertexAiClient.ts X export const testVertexAI = async () => { try { const prompt = 'HUX8! 1+1@ 4x?'; const result = await model.generateContent(prompt); const response = result.response; const text = response.candidates?.[0]?.content?.parts?.[0]?.text || ''; console.log('Vertex AI Q:', text); return text; } catch (error: any) { console.error('L Vertex AI L (:', error.message); throw error; } }; ``` ## 7: L `src/index.ts` Vertex AI D Li: ```typescript // src/index.ts import { testVertexAI } from './vertexAiClient'; const main = async () => { console.log('> Vertex AI L ܑ...\n'); try { await testVertexAI(); console.log('\n Vertex AI 1!'); } catch (error: any) { console.error('\nL $X :', error.message); } }; main().catch(error => { console.error('  $X :', error); process.exit(1); }); ``` l| i: ```bash npx ts-node src/index.ts ```  %: ``` > Vertex AI L ܑ...  Vertex AI t|t 0Tȵ. Vertex AI Q: HUX8! 1+1@ 2.  Vertex AI 1! ``` ## Xm - **D**: Vertex AI 0| ). L  Dt pX X J, \UX API 8 | \Tt| i. - **Region**: `asia-northeast1` ()D Xt \m/| `x Q | D  . - **x **: `gemini-2.5-pro` \t %\ xt, Dt . \ X Д `gemini-1.5-flash`| X t T |  . --- L **v8** 줸 Vertex AI| X Freee p D \ tL\ XX 0D lX.