iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0

ChatGPT、Gemini、Claude —— 程式碼詳細介紹(強化:Gemini 與 Claude 範圍擴充)

本文件比較並示範如何以程式碼使用三大主流生成式 AI:OpenAI ChatGPT(簡述)Google Gemini / PaLM(詳述)、以及 Anthropic Claude(詳述)。主要聚焦在 Gemini 與 Claude 的中文說明與實作範例(Python、Node.js、Embedding、Multimodal、串流、RAG 與實務建議)。

目錄

  1. Claude 深入(中文說明 + 程式碼詳解)

    • 3.1 Claude 是什麼?設計哲學與適用場景
    • 3.2 認證與安裝
    • 3.3 Python 範例:基本呼叫與對話格式
    • 3.4 Node.js 範例:串流與長回應處理
    • 3.5 Embeddings 與安全策略(filtering / constitution)
    • 3.6 系統提示(Constitution)範例與安全設計
    • 3.7 錯誤處理、速率限制與成本控管
  2. Gemini vs Claude:如何選擇

快速概觀

  • Claude(Anthropic):強調可控性、安全性與可解釋策略(constitution-driven),適合對輸出可控性、法遵與風險低容忍度的企業應用。

3.Claude 深入(中文說明 + 程式碼詳解)

3.1 Claude 是什麼?設計哲學與適用場景

  • Claude 由 Anthropic 開發,設計注重輸出可控性、安全性(透過 constitution / policy 指令集)及企業級使用案例
  • 適合:需要更嚴格輸出限制、合規審查、或在高風險領域(法律、醫療、金融)降低錯誤輸出的場景

3.2 認證與安裝

  • 取得 API Key(Anthropic 控制台)
  • 安裝官方SDKpip install anthropicnpm install @anthropic/sdk(以官方為準)

3.3 Python 範例:基本呼叫與對話格式

import os
from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPT

client = Anthropic(api_key=os.getenv('ANTHROPIC_API_KEY'))

human_message = '請用 3 句話總結下列段落:

[段落內容]'
prompt = HUMAN_PROMPT + human_message + AI_PROMPT

resp = client.completions.create(
    model='claude-2.1',
    prompt=prompt,
    max_tokens_to_sample=250,
)
print(resp['completion'])

說明:Anthropic 使用 HUMAN_PROMPTAI_PROMPT 來協助構造對話式的 prompt,亦可自行控制 system / user 角色的內容

3.4 Node.js 範例:串流與長回應

// 假設有官方 Node SDK,以下為示例性程式
import Anthropic from '@anthropic/sdk';
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });

async function run() {
  const resp = await client.completions.create({
    model: 'claude-2.1',
    prompt: '
Human: 請用中文解釋區塊鏈基礎概念。

Assistant:',
    max_tokens_to_sample: 400,
  });
  console.log(resp.completion);
}
run();

// 若需串流,請參考官方 SDK 或使用 HTTP 長連線的 stream endpoint

3.5 Embeddings 與安全策略(filtering / constitution)

  • Anthropic 亦提供 embeddings 與檢索式流程,可用於 RAG。搭配 Claude 安全設定,能在檢索加入過濾(例如:排除來自未授權來源的內容)
# Embeddings 範例(示意)
emb = client.embeddings.create(model='claude-2-embeddings', input='文件內容')
vec = emb['data'][0]['embedding']
# 存到向量DB、做檢索

3.6 系統提示(Constitution)範例與安全設計

  • Anthropic 的 "constitution" 概念是用一套原則去引導模型回應(例如安全第一、拒絕危險請求)
  • 範例:在 prompt 前加上短版 constitution 指令,要求模型在遇到醫療或法律類問題時回覆高風險提示或建議尋求專業
# constitution 範例(簡化)
- 如果請求要求醫療診斷,模型應提供通用建議並強調尋求專業診斷。
- 如果請求涉及違法行為,模型應拒絕並提供安全替代方案。

將此類規則以系統提示或中介檢查流程加入應用中,能顯著降低風險

3.7 錯誤處理、速率限制與成本控管

  • Retry與退避:對 429/5xx 錯誤實作重試與退避邏輯
  • Token/Cost控制:限制 max_tokens_to_sample、在 prompt 中指示 "只回答要點" 等等
  • 監控:收集呼叫成功率、平均回應時間、token 使用量,以便計費與效能優化

Gemini vs Claude 如何選擇

  • 若需多模態、與搜尋或 GCP 生態整合Gemini 更適合
  • 若需極致可控、合規導向或高風險產業Claude 提供較多可控性工具與 Constitution 機制
  • 成本、延遲與本地法規也會影響決策;在重要場景建議做 A/B 測試或混合架構(例如:先用 Claude 做安全篩選,再交給 Gemini 生成更自然的文本)

上一篇
Day24-Gemini
系列文
AI咒術迴戰~LLM絕對領域展開25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言