コアAPI

完全なGemini CLI Core APIリファレンスと使用ガイド

APIリファレンス30分で読める

APIモジュール

コアAPIモジュールとメソッド

GeminiClient

コアGemini APIクライアントクラス

src/core/gemini.ts

constructor

constructor(config: GeminiConfig)

Geminiクライアントインスタンスを作成

パラメータ:
configGeminiConfig

クライアント設定オブジェクト

例:
const client = new GeminiClient({
  apiKey: process.env.GEMINI_API_KEY,
  model: 'gemini-pro',
  temperature: 0.7
})

chat

async chat(message: string, context?: Context): Promise<ChatResponse>

チャットメッセージを送信して応答を取得

パラメータ:
messagestring

ユーザー入力メッセージ

contextContext

オプションのコンテキスト情報

戻り値:
Promise<ChatResponse>

チャット応答オブジェクト

例:
const response = await client.chat('Hello, Gemini!', {
  files: ['src/index.ts'],
  history: previousMessages
})

stream

async stream(message: string, context?: Context): AsyncGenerator<string>

ストリーミングチャット応答

パラメータ:
messagestring

ユーザー入力メッセージ

contextContext

オプションのコンテキスト情報

戻り値:
AsyncGenerator<string>

ストリーミング応答ジェネレータ

例:
for await (const chunk of client.stream('Explain this code')) {
  process.stdout.write(chunk)
}

SessionManager

セッション状態マネージャー

src/core/session.ts

createSession

createSession(id?: string): Session

新しいセッションを作成

パラメータ:
idstring

オプションのセッションID

戻り値:
Session

新しく作成されたセッションオブジェクト

例:
const session = sessionManager.createSession('my-session')

getSession

getSession(id: string): Session | null

指定されたセッションを取得

パラメータ:
idstring

セッションID

戻り値:
Session | null

セッションオブジェクトまたはnull

例:
const session = sessionManager.getSession('my-session')

saveSession

async saveSession(session: Session): Promise<void>

セッションを永続ストレージに保存

パラメータ:
sessionSession

保存するセッションオブジェクト

例:
await sessionManager.saveSession(session)

ContextManager

コンテキスト処理マネージャー

src/core/context.ts

addFile

async addFile(filePath: string): Promise<void>

ファイルをコンテキストに追加

パラメータ:
filePathstring

ファイルパス

例:
await contextManager.addFile('src/utils/helper.ts')

addDirectory

async addDirectory(dirPath: string, options?: DirOptions): Promise<void>

ディレクトリをコンテキストに追加

パラメータ:
dirPathstring

ディレクトリパス

optionsDirOptions

ディレクトリスキャンオプション

例:
await contextManager.addDirectory('src/', {
  exclude: ['*.test.ts'],
  maxDepth: 3
})

getContext

getContext(): Context

現在のコンテキストを取得

戻り値:
Context

現在のコンテキストオブジェクト

例:
const context = contextManager.getContext()

型定義

Core APIのTypeScript型定義

GeminiConfig

Geminiクライアント設定インターフェース

apiKeystring
必須

Google AI APIキー

modelstring

使用するモデル名、デフォルトは "gemini-pro"

temperaturenumber

生成温度、0-1の間

maxTokensnumber

最大トークン数

timeoutnumber

リクエストタイムアウト(ミリ秒)

ChatResponse

チャット応答インターフェース

contentstring
必須

応答内容

usageTokenUsage
必須

トークン使用情報

modelstring
必須

使用されたモデル

finishReasonstring

終了理由

Context

コンテキスト情報インターフェース

filesFileContext[]

ファイルコンテキストリスト

historyMessage[]

メッセージ履歴

metadataRecord<string, any>

メタデータ

Session

セッションインターフェース

idstring
必須

一意のセッション識別子

messagesMessage[]
必須

メッセージ履歴

contextContext

セッションコンテキスト

createdAtDate
必須

作成時間

updatedAtDate
必須

更新時間

使用例

一般的なAPI使用シナリオとコード例

基本チャット

シンプルなチャット対話の例

import { GeminiClient } from '@gemini/core'

const client = new GeminiClient({
  apiKey: process.env.GEMINI_API_KEY,
  model: 'gemini-pro'
})

async function basicChat() {
  try {
    const response = await client.chat('Hello, how are you?')
    console.log('AI:', response.content)
  } catch (error) {
    console.error('Chat error:', error.message)
  }
}

ファイルコンテキスト

ファイルコンテキストを含むチャット

import { GeminiClient, ContextManager } from '@gemini/core'

const client = new GeminiClient({ apiKey: process.env.GEMINI_API_KEY })
const contextManager = new ContextManager()

async function chatWithFiles() {
  // Add files to context
  await contextManager.addFile('src/utils/helper.ts')
  await contextManager.addDirectory('src/components/')

  const context = contextManager.getContext()

  const response = await client.chat(
    'Explain the helper functions in this codebase',
    context
  )

  console.log(response.content)
}

セッション管理

永続セッションの管理

import { SessionManager } from '@gemini/core'

const sessionManager = new SessionManager()

async function manageSessions() {
  // Create new session
  const session = sessionManager.createSession('project-review')

  // Add messages to session
  session.messages.push({
    role: 'user',
    content: 'Review this code for best practices'
  })

  // Save session
  await sessionManager.saveSession(session)

  // Restore session later
  const restored = sessionManager.getSession('project-review')
  console.log('Session messages:', restored?.messages.length)
}

ストリーミング応答

リアルタイムストリーミング出力

import { GeminiClient } from '@gemini/core'

const client = new GeminiClient({ apiKey: process.env.GEMINI_API_KEY })

async function streamingChat() {
  console.log('AI: ')

  for await (const chunk of client.stream('Write a short story')) {
    process.stdout.write(chunk)
  }

  console.log('\n\nStream completed!')
}

エラーハンドリング

APIエラータイプと処理方法

AuthenticationError

無効または期限切れのAPIキー

GEMINI_AUTH_ERROR

解決策:

APIキーが正しく設定されているか確認し、キーが有効で期限切れでないことを確認してください

RateLimitError

リクエスト頻度が制限を超えています

GEMINI_RATE_LIMIT

解決策:

指数バックオフ再試行メカニズムを実装するか、より高いクォータプランにアップグレードしてください

ContextTooLargeError

コンテキストコンテンツがモデルの制限を超えています

GEMINI_CONTEXT_TOO_LARGE

解決策:

コンテキストファイルの数を減らすか、ファイル要約機能を使用してください

NetworkError

ネットワーク接続の問題

GEMINI_NETWORK_ERROR

解決策:

ネットワーク接続を確認し、プロキシ設定を構成するか、タイムアウトを増やしてください

次のステップ

これらのリソースで開発の旅を続けてください