> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 大規模言語モデル

## モデルの機能

大規模言語モデル（LLM）は、ディープラーニングと自然言語処理技術を用いて構築された AI モデルの一種です。膨大な量のテキストデータで学習された後、人間の言語を理解、生成、処理できます。LLM には主に次の機能があります。

* **テキスト生成**

  LLM はコンテキストに基づいて論理的に一貫したコンテンツを生成し、必要に応じて出力スタイルを調整できます。
* **言語理解**

  LLM は入力テキストの意味を正確に理解し、コンテキストを考慮した会話をサポートできます。
* **テキスト翻訳**

  LLM は言語横断的な理解と生成が可能で、異なる言語間の翻訳を実現できます。
* **知識ベースの Q\&A**

  広範な知識基盤により、LLM は文化、科学、歴史などのさまざまな分野にわたる質問に回答できます。
* **コード理解と生成**

  LLM はコード（Python、Java、C++ など）を理解および生成し、コードのエラーを検出して提案を行うことができます。
* **テキスト分類と要約**

  LLM は複雑な文を理解し、情報を分類・抽出し、要点を要約できます。

## モデルの選択

[LLM Service Page](https://novita.ai/models) では、サポートされているモデルの一覧を閲覧し、モデルの基本情報や料金を確認できます。特定のモデルをクリックすると、その詳細ページを開いてオンラインデモを利用できます。自分のタスクで複数のモデルを試した後、比較して最適なものを選択できます。

## API 統合

Novita AI は、オープンソースモデル向けに高速で信頼性の高い API を提供し、トップクラスの LLM API の使いやすさと信頼性を、オープンソース LLM の柔軟性とコスト効率と組み合わせています。

* [ChatCompletion](https://platform.openai.com/docs/guides/text-generation/chat-completions-api): ストリーミングモードと非ストリーミングモードの両方をサポートします。
* [Completion](https://platform.openai.com/docs/guides/text-generation/completions-api): こちらもストリーミングモードと非ストリーミングモードの両方をサポートします。

すでに OpenAI の `ChatCompletion` または `Completion` API を使用している場合は、base URL を api.novita.ai/openai に設定し、API キーを取得して設定し、必要に応じてモデル名を更新するだけで LLM サービスの利用を開始できます。

<Tip>
  API キーの作成、保存、使用方法については、[API Keys](/docs/ja/guides/llm-api-keys) を参照してください。
</Tip>

## コード例

### Python

<CodeGroup>
  ```python ChatCompletion theme={"system"}
  from openai import OpenAI

  client = OpenAI(
      base_url="https://api.novita.ai/openai",
      api_key="<Your API Key>",
  )

  model = "deepseek/deepseek-r1"
  stream = True  # or False
  max_tokens = 512

  chat_completion_res = client.chat.completions.create(
      model=model,
      messages=[
          {
              "role": "system",
              "content": "you are a professional AI helper.",
          },
          {
              "role": "user",
              "content": "Where can the example of GPU provided by novita ai be adapted?",
          }
      ],
      stream=stream,
      max_tokens=max_tokens,
  )

  if stream:
      for chunk in chat_completion_res:
          print(chunk.choices[0].delta.content or "", end="")
  else:
      print(chat_completion_res.choices[0].message.content)
  ```

  ```python Completion theme={"system"}
  from openai import OpenAI

  client = OpenAI(
      base_url="https://api.novita.ai/openai",
      api_key="<Your API Key>",
  )

  model = "deepseek/deepseek-r1"
  stream = True  # or False
  max_tokens = 512

  completion_res = client.completions.create(
      model=model,
      prompt="Where can the example of GPU provided by novita ai be adapted?",
      stream=stream,
      max_tokens=max_tokens,
  )

  if stream:
      for chunk in completion_res:
          print(chunk.choices[0].text or "", end="")
  else:
      print(completion_res.choices[0].text)
  ```
</CodeGroup>

### Curl

<CodeGroup>
  ```bash ChatCompletion theme={"system"}
  export API_KEY="<Your API Key>"

  curl "https://api.novita.ai/openai/v1/chat/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${API_KEY}" \
    -d '{
      "model": "deepseek/deepseek-r1",
      "messages": [
          {
              "role": "system",
              "content": "you are a professional AI helper."
          },
         {
              "role": "user",
              "content": "Where can the example of GPU provided by novita ai be adapted?"
          }
      ],
      "max_tokens": 512
  }'
  ```

  ```bash Completion theme={"system"}
  export API_KEY="<Your API Key>"

  curl "https://api.novita.ai/openai/v1/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${API_KEY}" \
    -d '{
      "model": "deepseek/deepseek-r1",
      "prompt": "Where can the example of GPU provided by novita ai be adapted?",
      "max_tokens": 512
  }'
  ```
</CodeGroup>

## 主要パラメータ

### 基本パラメータ

`model`: 対象の LLM です。完全な一覧は [LLM Service Page](https://novita.ai/models) で確認できます。

### Messages

> ChatCompletion のみ

`messages`: LLM とやり取りする際の入力と出力です。各メッセージは 1 つの発話者に属します。Messages はより良い出力を得るのに役立ち、さまざまな方法を試してより良い結果を得ることができます。

* `content`: メッセージの内容。
* `role`: 発話者を定義します:
  * `system`: AI の役割を設定し、モデルにその役割や振る舞いを伝えます。
  * `user`: ユーザーの入力。
  * `assistant`: AI の応答。ユーザーは事前に出力例を与えることで、現在のリクエストにどのように回答するかをモデルに伝えることができます。
* `name`（任意）: 同じ role を持つメッセージ作成者を区別します。

### Prompt

> ChatCompletion のみ

`prompt`: 補完を生成するための指示テキストで、ユーザーが LLM に対してモデルのタスクを明確に伝えるために記述します。

### 出力制御

パラメータのさまざまな組み合わせにより、モデルがより満足のいくコンテンツを生成しやすくなります。

**テキストの多様性**

> 'temperature' と 'top\_p' は生成されるテキストの多様性を制御できます。どちらか一方のみを設定することをおすすめします。設定値が大きいほど、テキストはより多様になります。設定値が小さいほど、テキストはより正確になります。

* `temperature`: ランダム性を制御します。高いほど創造的になります。
* `top_p`: Nucleus sampling です。累積確率を制御します。
* `top_k`: 候補トークン数を制限します。

**繰り返しペナルティ**

* `presence_penalty`: テキスト内の繰り返しトークンを制御します。あるトークンがすでにテキスト内に存在する場合、ペナルティが適用され、その結果テキスト内のトークンが増えます。
* `frequency_penalty`: テキスト内のトークン頻度を制御します。同じトークンがテキスト内に出現するたびにペナルティが適用され、今後テキスト内で同じトークンが出現しにくくなります。
* `repetition_penalty`: 繰り返しにペナルティを与える、または促進します。

### 出力制限

* `max_tokens`: 1 回の応答に含まれる最大トークン数です。テキスト内でこの値を超える内容は切り捨てられます。
* `stream`: ストリーミングを使用するかどうかです。出力が長い場合は、タイムアウトエラーを防ぐためにストリーミングモードの使用をおすすめします:
  * `true`: ストリーミングされ、生成されるたびに部分的な結果が返されます。
  * `false`: 処理後に完全な結果が返されます。
* `stop`: 出現した場合に生成を終了する文字列です。
