💻

軽量なプロンプトエンジニアリング用ライブラリellを使ってみた

2024/09/30に公開

はじめに

プロンプトエンジニアリング用のライブラリといえば、langchainは結構有名ですが、
langchainはかなり抽象的でなかなか使いづらいと感じる方が多いかもしれません。
最近ellという軽量なPrompt Engineering libraryを見つけて良さそうと思ったので、
本記事で基本の使い方を紹介したいと思います。

ざっくりellの機能紹介

  • プロンプトを関数として扱う:
    • プロンプトは単なる文字列ではなく、関数として扱われ、「LMP(Language Model Program)」としてカプセル化される
  • プロンプトエンジニアリングの最適化サポート:
    • 自動バージョン管理やコミットメッセージの生成機能を提供し、プロンプトの改良や最適化が簡単にできる
  • Ell Studioによる管理ツール:
    • ローカルツール「Ell Studio」を使用して、プロンプトのバージョン管理、モニタリング、視覚化を行える
  • テスト時の計算とモジュール化対応:
    • 言語モデルを複数回呼び出す問題を分割し、モジュール化された形での実装が可能
  • マルチモーダル対応:
    • 画像、音声、動画などのデータ型に対応し、これらを使用したプロンプト生成が可能
  • ワークフローを妨げない軽量性:
    • 通常のPythonコードを使用しながら、プロンプト生成機能を活用可能。特別なエディタやIDEは不要
  • マルチモーダル対応:
    • シンプルな文字列出力だけでなく、必要に応じて複雑なマルチモーダルな応答にも対応

初期設定

インストール

ellのインストールはpipで完結できて、あとはAPIキーを設定するだけです。

pip install -U ell-ai

# デフォルトはopenaiのSDKしかインストールされないので、AnthropicのSDK使用する場合は下記コマンドを実行する
pip install -U ell-ai[anthropic]

APIキーの設定

  1. openaiのAPIキーを使用する場合、下記環境変数を設定します。
export OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>
  1. AnthropicのAPIキーを使用する場合、下記環境変数を設定します。
export ANTHROPIC_API_KEY=<YOUR_ANTHROPIC_API_KEY>

使ってみる

プロンプトの作成

ellでは、簡単にプロンプトを作成できます。

import ell

@ell.simple(model="gpt-4o")
def hello(name: str):
    """You are a helpful assistant.""" # System prompt
    return f"Say hello to {name}!" # User prompt

greeting = hello("RUI")
print(greeting)

---
Hello, RUI! How can I assist you today?

ellでは、プロンプトを関数単位として定義することを推奨することで、プロンプトの作成を簡素化します。上記例では、関数はドキュメント文字列を通してシステムプロンプトを定義し、戻り値の文字列を通してユーザープロンプトを定義しています。
そして、プロンプトの使用者は、手動でメッセージを構築する代わりに、定義されたパラメータを使って単純に関数を呼び出すことができます。
このアプローチにより、プロンプトの可読性、保守性、再利用性が向上します。

@ell.simpleを理解する

@ell.simpleデコレータはellの重要な概念の一つです。

以下は@ell.simpleで起こっていることです:

  1. 関数のドキュメント文字列がシステムメッセージになる
  2. 関数の戻り値がユーザーメッセージになる
  3. デコレータがAPI呼び出しを処理し、モデルの応答を文字列として返す

これでより簡潔で再利用可能なコードが可能になりますが、
裏側で何が起こっているかわかりづらいと思う場合、詳細モードを有効にして確認することも可能です。

import ell

# 詳細モードを有効にする
ell.init(verbose=True)

@ell.simple(model="gpt-4o")
def hello(name: str):
    """You are a helpful assistant.""" # System prompt
    return f"Say hello to {name}!" # User prompt

greeting = hello("RUI")
print(greeting)

---
╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
║ hello(RUI)
╠══════════════════════════════════════════════════════════════════════════════════════════════════╣
║ Prompt:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│      system: You are a helpful assistant.
│
│        user: Say hello to RUI!
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
║ Output:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│   assistant: Hello, RUI! How can I assist you today?
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
Hello, RUI! How can I assist you today?

メッセージのフォーマットを変える

上記例では、シンプルな文字列でメッセージを構築しましたが、
ellでは、もっと柔軟にメッセージを構築することが可能です。

  • ell.system
  • ell.user
  • ell.assistant
import ell

@ell.simple(model="gpt-4o")
def hello(name: str):
    return [
        ell.system("You are a helpful assistant."),
        ell.user(f"Say hello to {name}!"),
        ell.assistant(f"Hello! I'd be happy to greet {name}."),
        ell.user("Great! Now do it more enthusiastically.")
    ]

greeting = hello("RUI")
print(greeting)

---
Hey there, RUI! So great to see you! 🎉😊 How's everything going?

プロンプトを言語モデルのプログラミングとして扱う

ellの最も強力な機能の1つは、プロンプトを単なる文字列ではなくプログラムとして扱うことです。
このアプローチにより、プロンプトエンジニアリングにおいてPythonの全機能を活用することができます。

例:

import ell
import random

def get_random_adjective():
    adjectives = ["enthusiastic", "cheerful", "warm", "friendly"]
    return random.choice(adjectives)

@ell.simple(model="gpt-4o")
def hello(name: str):
    """You are a helpful assistant."""
    adjective = get_random_adjective()
    return f"Say a {adjective} hello to {name}!"

greeting = hello("RUI")
print(greeting)

---
Hey RUI! 🎉 How's it going? So excited to chat with you today! 😊

これによりLMPが他のLMPを呼び出したり、より複雑なプロンプトを構築したりすることが可能になります。

旅行案内Botを作って、もっと複雑な例を見てみましょう。

  1. 旅行アイデアを生成する
  2. 旅行プランを作成する
  3. 最適なプランを選択する
  4. 最終調整
import ell
from typing import List

ell.init(verbose=True)

@ell.simple(model="gpt-4o-mini", temperature=1.0)
def generate_travel_ideas(destination : str):
    """あなたは旅行プランナーの専門家です。1つの旅行アイデアを提案してください。"""
    return f"{destination}についての旅行プランを提案してください。"

@ell.simple(model="gpt-4o-mini", temperature=1.0)
def write_a_draft_of_a_travel_plan(idea : str):
    """あなたは旅行プラン作成のプロフェッショナルです。プランは3段落で構成してください。"""
    return f"{idea}に基づいた旅行プランを作成してください。"

@ell.simple(model="gpt-4o", temperature=0.1)
def choose_the_best_plan(plans : List[str]):
    """あなたは旅行プランのベテラン編集者です。"""
    return f"以下のリストから最適な旅行プランを選んでください: {'\n'.join(plans)}."

@ell.simple(model="gpt-4-turbo", temperature=0.2)
def write_a_perfect_travel_plan(destination : str):
    """あなたは一流の旅行プランナーで、完璧なプランを作成してください。"""
    # 複数の旅行アイデアを生成
    ideas = generate_travel_ideas(destination, api_params=(dict(n=4)))

    # 各アイデアに基づいて旅行プランを作成
    drafts = [write_a_draft_of_a_travel_plan(idea) for idea in ideas]

    # 最適なプランを選択
    best_plan = choose_the_best_plan(drafts)

    # 選ばれたプランを最終調整して出力
    return f"この旅行プランを最終的に仕上げてください: {best_plan}."

# 新潟県への旅行プランを作成
travel_plan = write_a_perfect_travel_plan("新潟")
print(travel_plan)

---
この新潟県の3日間の旅行プランは、自然、食文化、温泉、そして伝統を存分に楽しむためのものです。以下は、各日の詳細なスケジュールとおすすめのアクティビティです。

### 1日目: 新潟市内文化探訪
- **午前**
  - 新潟駅に到着後、新潟市歴史博物館へ。新潟の歴史と文化の深い理解を得ることができます。
  - 歴史博物館の見学後、長岡生姜醤油ラーメンで地元の味を楽しみます。

- **午後**
  - ランチ後、マリンピア日本海で海の生物とのふれあいを楽しみます。
  - 萬代橋を散策し、新潟の美しい景観を堪能。
  - 夕食は新潟の鮮魚を使った料理を堪能。

### 2日目: 自然と温泉の癒しの旅
- **午前**
  - 妙高高原でのハイキング。自然の中でリフレッシュし、四季折々の景色を楽しむ。
  - ハイキング後は、地元の手打ち蕎麦を味わいます。

- **午後**
  - 赤倉温泉でリラックス。温泉で疲れを癒し、季節に応じてスキーやゴルフを楽しむことも。
  - 温泉宿での宿泊と、懐石料理でのディナー。

### 3日目: 伝統文化と特産品の探求
- **午前**
  - 直江津の町を散策し、伝統的な街並みや地元の商店を訪れます。
  - 高田公園で季節の花や風景を楽しみ、新鮮な海鮮丼を昼食に。

- **午後**
  - 魚沼市へ移動し、魚沼産コシヒカリの生産体験。米作りを学び、地域の風土を感じる。
  - 夕方に新潟市に戻り、笹団子や日本酒などのお土産を購入。

このプランは、新潟県の魅力を最大限に体験できるように設計されています。自然の美しさ、地元の美食、温泉の癒し、そして伝統文化の探求を通じて、訪れるすべての人にとって忘れられない旅行になることでしょう。旅の準備をお楽しみください!
詳細モードからの出力
╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
║ generate_travel_ideas(新潟)
╠══════════════════════════════════════════════════════════════════════════════════════════════════╣
║ Prompt:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│      system: あなたは旅行プランナーの専門家です。1つの旅行アイデアを提案してください。
│
│        user: 新潟についての旅行プランを提案してください。
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
║ Output:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│   assistant: 新潟県は美しい自然や美味しい食文化、伝統的な温泉が魅力です。以下は、新潟を満喫する3日間の旅行プランです。
│              
│              ### 1日目: 新潟市内観光
│              - **午前**  
│                - **新潟駅到着**: 新潟市の中心部にある新潟駅で観光開始。
│                - **新潟市歴史博物館**: 新潟の歴史と文化を学べる博物館を訪問。
│              
│              - **昼食**  
│                - **長岡生姜醤油ラーメン**を堪能。新潟名物のラーメンを楽しんでください。
│              
│              - **午後**  
│                - **新潟港海洋館「マリンピア日本海」**: 海洋生物やショーを楽しめる水族館を訪問。
│                - **萬代橋**: 新潟のシンボルとも言える美しい橋を散策。
│              
│              - **夕食**  
│                - **新潟名物の鮮魚料理**を提供する居酒屋で食事。
│              
│              ### 2日目: 上越エリアの自然と温泉
│              - **午前**  
│                - **妙高高原へ移動**: 車や電車で約1時間半。 
│                - **妙高高原のハイキング**: 美しい自然の中でトレッキング。
│              
│              - **昼食**  
│                - **地元の蕎麦屋**で手打ち蕎麦を食べる。
│              
│              - **午後**  
│                - **赤倉温泉**: 温泉につかりながら、リフレッシュ。
│                - **スキーやゴルフ(季節に応じて)**: 冬はスキー、夏はゴルフが楽しめます。
│              
│              - **夕食**  
│                - **温泉宿での宿泊**: 夕食は宿の懐石料理を楽しむ。
│              
│              ### 3日目: 新潟の伝統文化と直江津
│              - **午前**  
│                - **直江津の町を散策**: 伝統的な街並みや、地元の商店を訪問。
│                - **高田公園**: 季節の花や風景を楽しむ。
│              
│              - **昼食**  
│                - **地元の海鮮丼を楽しむ。**
│              
│              - **午後**  
│                - **新潟県魚沼市へ移動**: 美しい山々を背景にした地域。
│                - **魚沼産コシヒカリを体験**: 田んぼの見学や、米作りの体験をしてみる。
│              
│              - **夕方**  
│                - 新潟市に戻り、**お土産購入**: 笹団子や日本酒を買うのをお忘れなく!
│              
│              このプランで新潟の美しい自然と豊かな食を充分に楽しむことができるでしょう。楽しい旅行をお過ごしください!
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
║ write_a_draft_of_a_travel_plan(新潟県は美しい自..)
╠══════════════════════════════════════════════════════════════════════════════════════════════════╣
║ Prompt:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│      system: あなたは旅行プラン作成のプロフェッショナルです。プランは3段落で構成してください。
│
│        user: 新潟県は美しい自然や美味しい食文化、伝統的な温泉が魅力です。以下は、新潟を満喫する3日間の旅行プランです。
│              ### 1日目: 新潟市内観光
│              - **午前**
│                - **新潟駅到着**: 新潟市の中心部にある新潟駅で観光開始。
│                - **新潟市歴史博物館**: 新潟の歴史と文化を学べる博物館を訪問。
│              - **昼食**
│                - **長岡生姜醤油ラーメン**を堪能。新潟名物のラーメンを楽しんでください。
│              - **午後**
│                - **新潟港海洋館「マリンピア日本海」**: 海洋生物やショーを楽しめる水族館を訪問。
│                - **萬代橋**: 新潟のシンボルとも言える美しい橋を散策。
│              - **夕食**
│                - **新潟名物の鮮魚料理**を提供する居酒屋で食事。
│              ### 2日目: 上越エリアの自然と温泉
│              - **午前**
│                - **妙高高原へ移動**: 車や電車で約1時間半。
│                - **妙高高原のハイキング**: 美しい自然の中でトレッキング。
│              - **昼食**
│                - **地元の蕎麦屋**で手打ち蕎麦を食べる。
│              - **午後**
│                - **赤倉温泉**: 温泉につかりながら、リフレッシュ。
│                - **スキーやゴルフ(季節に応じて)**: 冬はスキー、夏はゴルフが楽しめます。
│              - **夕食**
│                - **温泉宿での宿泊**: 夕食は宿の懐石料理を楽しむ。
│              ### 3日目: 新潟の伝統文化と直江津
│              - **午前**
│                - **直江津の町を散策**: 伝統的な街並みや、地元の商店を訪問。
│                - **高田公園**: 季節の花や風景を楽しむ。
│              - **昼食**
│                - **地元の海鮮丼を楽しむ。**
│              - **午後**
│                - **新潟県魚沼市へ移動**: 美しい山々を背景にした地域。
│                - **魚沼産コシヒカリを体験**: 田んぼの見学や、米作りの体験をしてみる。
│              - **夕方**
│                - 新潟市に戻り、**お土産購入**: 笹団子や日本酒を買うのをお忘れなく!
│              このプランで新潟の美しい自然と豊かな食を充分に楽しむことができるでしょう。楽しい旅行をお過ごしください!に基づいた旅行プランを作成してください。
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
║ Output:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│   assistant: 新潟県を存分に楽しむための3日間の旅行プランをご提案します。このプランでは新潟の魅力的な自然、美食、温泉、そして伝統文化を体験できる内容とな
│              っています。
│              
│              ### 1日目: 新潟市内文化探訪
│              - **午前**  
│                新潟駅に到着後、まずは新潟市歴史博物館を訪れましょう。ここでは新潟の豊かな歴史や文化について学ぶことができます。その後、地元の名物である長岡生姜
│              醤油ラーメンをランチに楽しむのがおすすめです。
│              
│              - **午後**  
│                ランチの後は、新潟港にある海洋館「マリンピア日本海」を訪れ、海の生物たちと触れ合いながら楽しいひと時を過ごします。また、萬代橋を散策し、美しい景
│              観を堪能した後、新潟名物の鮮魚料理で夕食を楽しみましょう。
│              
│              ### 2日目: 自然と温泉の癒しの旅
│              - **午前**  
│                妙高高原へ向かい、豊かな自然に囲まれたハイキングを楽しんでください。四季折々の美しい景色が楽しめ、心身ともにリフレッシュできます。ハイキング後は
│              、近くの蕎麦屋で地元の手打ち蕎麦を堪能しましょう。
│              
│              - **午後**  
│                赤倉温泉で温泉につかり、日々の疲れを癒す時間を持つのも良いでしょう。季節によってスキーやゴルフも楽しめるため、アクティビティを選ぶことができます
│              。最後は温泉宿に宿泊し、宿の懐石料理で優雅なディナーを楽しみましょう。
│              
│              ### 3日目: 伝統文化と特産品の探求
│              - **午前**  
│                直江津の町を散策し、伝統的な街並みや地元の商店を巡ります。高田公園では、季節の花や美しい風景を楽しみながらリラックスすることができます。昼食には
│              、新鮮な地元の海鮮丼を味わってください。
│              
│              - **午後**  
│                午後は新潟県魚沼市へ移動し、こだわりの魚沼産コシヒカリを体験するアクティビティに参加します。米作りを学びながら、地域の風土を感じることができる貴
│              重な体験です。夕方には新潟市に戻り、笹団子や日本酒などお土産の購入をお忘れなく!
│              
│              この3日間のプランでは、新潟の素晴らしい自然、美味しい食事、伝統文化や温泉を盛り込み、充実した旅行を楽しむことができるでしょう。素敵な旅をお過ごし
│              ください!
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
║ write_a_draft_of_a_travel_plan(新潟は美しい自然..)
╠══════════════════════════════════════════════════════════════════════════════════════════════════╣
║ Prompt:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│      system: あなたは旅行プラン作成のプロフェッショナルです。プランは3段落で構成してください。
│
│        user: 新潟は美しい自然と豊かな文化、そして美味しい料理が揃った素晴らしい旅行先です。以下に3日間の旅行プランを提案します。
│              ### 1日目: 新潟市内観光
│              - **午前**
│                - 新潟市の中心部に位置する「新潟市歴史博物館」へ。新潟の歴史や文化について学べます。
│                - 次に「萬代橋」を散策。新潟のシンボル的な橋で、周囲の景色を楽しみながら写真撮影。
│              - **昼食**
│                - 地元の名物「へぎそば」を楽しむ。おすすめは「そば処青山」など。
│              - **午後**
│                - 「新潟伊勢丹」や「CoCoLo新潟」などでショッピング。地元の特産品やお土産を探しましょう。
│                - その後、「古町地区」の散策。独特の町並みやカフェ、アートギャラリーを楽しんで。
│              - **夕食**
│                - 新潟の地酒とともに海鮮料理を堪能。「のれん街」や「万代シテイ」で居酒屋巡りもおすすめ。
│              ### 2日目: 笹団子作り体験と日本海の絶景
│              - **午前**
│                - 笹団子作り体験。さまざまな教室があるので、事前に予約しておくと良いでしょう。自分で作った団子をお土産に。
│              - **昼食**
│                - 笹団子や地元野菜を使った定食屋でランチ。
│              - **午後**
│                - 日本海沿いをドライブ。特に「佐渡島」行きのフェリーに乗ってアプローチするのも良いです。佐渡では、自然や歴史遺産を探訪。
│              - **夕食**
│                - 佐渡の新鮮な魚介を楽しむ。
│              ### 3日目: 温泉と自然
│              - **午前**
│                - 「新津温泉」や「赤倉温泉」など、日帰り温泉施設へ行き、リラックス。
│              - **昼食**
│                - 温泉地の近くの飲食店で、地元の食材を使用したランチ。
│              - **午後**
│                - 「妙高高原」へ移動。自然散策や美しい風景を楽しむ。四季折々の美しさがあります。
│              - **夕方**
│                - 新潟市に戻り、「新潟空港」または「新潟駅」で帰路につく。
│              ### おすすめの持ち物
│              - カメラ(美しい風景を撮影するため)
│              - 歩きやすい靴
│              - 温泉用のタオルや水着
│              新潟の魅力を存分に楽しむため、ゆったりとしたスケジュールで観光してみてください!に基づいた旅行プランを作成してください。
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
║ Output:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│   assistant: 新潟はその美しい自然や文化、そして豊かな食文化が非常に魅力的な地域です。ここでは、3日間にわたる新潟旅行プランをご提案します。このプランでは、観光、
│              体験、そしてリラクゼーションを組み合わせて、充実した旅を楽しむことができます。
│              
│              ### 1日目: 新潟市内観光と美食体験
│              まず、新潟市を訪れたら「新潟市歴史博物館」で新潟の歴史や文化を学び、その後、名物「萬代橋」を散策しましょう。午後には「新潟伊勢丹」でショッピングを
│              楽しんだ後、風情ある「古町地区」を散策し、カフェでひと休み。夕食には、新潟の地酒と共に新鮮な海鮮料理を堪能し、地元の人々との交流も楽しみましょう。
│              
│              ### 2日目: 文化体験と自然探訪
│              午前中は、地元の手作り体験として笹団子作りに挑戦します。自分で作った笹団子はお土産に最適です。その後、日本海の美しい景色を楽しむためにドライブへ出か
│              け、佐渡島へのフェリーに乗りましょう。佐渡では、歴史的な名所や自然の美しさを体験でき、特に新鮮な海の幸を楽しむ夕食は外せません。
│              
│              ### 3日目: 温泉と自然の癒し
│              最終日は、温泉でリラックスしてスタートしましょう。「新津温泉」や「赤倉温泉」で日帰り入浴を楽しみ、ほっと一息ついてください。その後、妙高高原へ移動し
│              、四季折々の美しい自然を散策します。午後は少し観光を楽しんだ後、名残惜しさを感じながら新潟市へ戻り、新潟空港もしくは新潟駅から帰路につきましょう。
│              
│              この3日間のプランで、新潟の多様な魅力を存分に体験し、心に残る旅行を楽しんでください。旅の忘れ物として、カメラや歩きやすい靴をお忘れなく!
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
║ write_a_draft_of_a_travel_plan(新潟は美しい自然..)
╠══════════════════════════════════════════════════════════════════════════════════════════════════╣
║ Prompt:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│      system: あなたは旅行プラン作成のプロフェッショナルです。プランは3段落で構成してください。
│
│        user: 新潟は美しい自然と豊かな食文化、そして温泉地が魅力の地域です。以下に、3日間の新潟旅行プランを提案します。
│              ### 1日目:新潟市観光
│              - **午前:新潟駅到着**
│                - 新潟駅に到着後、駅周辺で朝食を楽しむ。
│                - 例:新潟名物の「へぎ蕎麦」や「タレカツ丼」
│              - **午前中:新潟市歴史博物館(みなとぴあ)**
│                - 新潟の歴史や文化を学べる施設。街の成り立ちや地元の食文化について知ることができる。
│              - **昼食:新潟の海鮮丼を堪能**
│                - 新潟の新鮮な海の幸を使った海鮮丼を楽しむ。地元の食材を使ったレストランを探してみましょう。
│              - **午後:白山公園散策**
│                - 美しい公園内を散策し、白山神社を訪れる。四季折々の自然を楽しむことができる。
│              - **夕方:新潟の居酒屋で地酒を楽しむ**
│                - 新潟は日本酒の名産地。地元の居酒屋で新潟の地酒と一緒に料理を楽しむ。
│              ### 2日目:上越・妙高エリア
│              - **午前:上越市へ移動(電車または車)**
│                - 上越市到着後、上越城を見学。
│              - **昼食:上越名物の「高田うどん」**
│                - 地元の人に愛される人気のうどん店で昼食。
│              - **午後:妙高高原観光**
│                - 妙高高原に移動し、大自然を楽しむ。トレッキングコースや美しい風景を楽しむ。
│              - **夕方:戸隠温泉または妙高温泉でリラックス**
│                - 日帰り入浴ができる温泉施設でリラックス。温泉からの景色も素晴らしいです。
│              - **夜:宿泊**
│                - 妙高地域の宿泊施設でのんびりと過ごす。
│              ### 3日目:佐渡島日帰り観光
│              - **朝:早めに起床し、フェリーで佐渡島へ移動**
│                - 新潟港から佐渡島へのフェリーに乗る。
│              - **午前:佐渡金山見学**
│                - 歴史的な金の採掘地を見学し、ガイドの説明を受けながら当時の様子をオリエンテーション。
│              - **昼食:佐渡のお魚料理を楽しむ**
│                - 地元の新鮮な魚を使った料理を堪能。
│              - **午後:たらい舟体験&景勝地巡り**
│                - たらい舟に乗って海を楽しむ。また、夫婦岩や尖閣湾などの美しいスポットを訪れる。
│              - **夕方:新潟に戻り、帰路へ**
│                - フェリーで新潟に戻り、帰路へ。
│              ### おすすめの持ち物
│              - 動きやすい服装と靴
│              - 温泉用のタオル
│              - 地元のお土産を持ち帰るためのエコバッグ
│              このプランを参考に、新潟の魅力を存分に楽しんでください!に基づいた旅行プランを作成してください。
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
║ Output:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│   assistant: 新潟の魅力を満喫する3日間の旅行プランをご提案いたします。自然の美しさ、おいしい食文化、そして温泉を存分に楽しみつつ、新潟の素晴らしい体験をお届け
│              します。
│              
│              ### 1日目:新潟市の魅力を味わう
│              - **午前:新潟駅周辺での朝食**
│                - 新潟名物「へぎ蕎麦」や「タレカツ丼」、地元のカフェで新潟の朝を楽しみます。美味しい朝食でエネルギーを充電します。
│                
│              - **昼食:新潟の海鮮丼を堪能**
│                - 新潟の豊かな海の幸を使った海鮮丼を味わえるお店を訪れ、商業港の新鮮な魚介類を楽しむ贅沢なランチタイムです。
│              
│              - **午後:白山公園と地酒**
│                - 散策後、新潟特有の地酒を提供する地元の居酒屋へ。昼間に散策した公園の美しい風景を思い返しながら、地域の味を楽しみましょう。
│              
│              ### 2日目:上越・妙高エリアの自然
│              - **午前:上越市で歴史探索**
│                - 上越城を見学し、その歴史を学びながら美しい景色を堪能します。県内の文化遺産に触れつつ、記念写真を撮りましょう。
│              
│              - **昼食:上越名物の「高田うどん」**
│                - 地元で人気のうどん店で、あたたかいおうどんを楽しんだ後、妙高高原へ向かいます。
│              
│              - **午後:妙高高原でアクティビティ**
│                - トレッキングを楽しんだり、自然の美しさを満喫したりするために、大自然に身を委ねます。日帰りの温泉で心身ともにリフレッシュしましょう。
│              
│              ### 3日目:佐渡島日帰り探訪
│              - **朝:フェリーで佐渡島へ**
│                - 新潟港からのフェリーは、快適な船旅で美しい風景を眺めながら佐渡島へ移動。海の上で静かな時間を過ごします。
│              
│              - **午前:佐渡金山見学**
│                - 歴史深い佐渡金山を訪れ、当時の採掘の様子やその歴史を学び、観光名所を見学します。
│              
│              - **昼食:新鮮なお魚料理**
│                - 佐渡ならではの新鮮なお魚料理を提供するレストランで、地酒と共に堪能します。
│              
│              - **午後:たらい舟体験で冒険**
│                - たらい舟に乗り、海の感触を楽しみながら美しい景勝地を訪れます。心に残る思い出をお作りください。
│              
│              - **夕方:新潟に戻り帰路へ**
│                - フェリーで新潟に戻り、心温まる思い出を抱いて帰路につきます。
│              
│              このプランを参考に、新潟の豊かな自然と文化を心ゆくまで楽しんでください!
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
║ write_a_draft_of_a_travel_plan(新潟旅行プラン
..)
╠══════════════════════════════════════════════════════════════════════════════════════════════════╣
║ Prompt:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│      system: あなたは旅行プラン作成のプロフェッショナルです。プランは3段落で構成してください。
│
│        user: 新潟旅行プラン
│              **旅行日程**: 3日間
│              ### 1日目: 新潟市探索
│              - **午前**: 新潟駅到着後、レンタカーを借りる。新潟市内の「万代シティ」ショッピングセンターを探索し、地元のカフェで朝食。
│              - **昼食**: 「新潟グルメ街」で、名物のへぎそばを味わう。
│              - **午後**: 新潟市美術館を訪れ、地元アーティストの作品を鑑賞。その後、「新潟県立自然科学館」で科学と自然を楽しむ。
│              - **夕方**: 新潟港にある「新潟市歴史博物館・みなとぴあ」を訪れ、港町の歴史を学ぶ。
│              - **夜**: 港に面した「Japanese Restaurant 魚河岸」で新鮮な海の幸を堪能。夜は「新潟万代島復興市場」でお土産探し。
│              ### 2日目: 村上市・鮭と温泉
│              - **朝**: 新潟市から村上市へドライブ(約1時間)。
│              - **午前**: 村上市の「鮭のふるさと»で鮭の情報を学び、地元の鮭料理を試食。
│              - **昼食**: 村上名物の「鮭の寿司」を楽しむ。
│              - **午後**: 「村上大祭」を観光し、その後、「石打丸山温泉」へ移動して、温泉でリラックス。
│              - **夜**: 旅館で地元の食材を使った夕食を楽しみながら、温泉で疲れを癒す。
│              ### 3日目: 佐渡島探訪
│              - **早朝**: フェリーで佐渡島へ移動(新潟港から約1時間)。
│              - **午前**: 佐渡金山を訪れ、江戸時代の金採掘の歴史を学ぶ。
│              - **昼食**: 佐渡島名物の「アジのたたき」や「佐渡の日本酒」を堪能する。
│              - **午後**: 「尖閣湾揚島遊園」を巡り、島の美しい自然を楽しむ。観光バスで島内の観光スポットを巡ることもおすすめ。
│              - **夕方**: フェリーで新潟港に戻り、帰路につく。
│              このプランは、新潟の自然、美食、文化を堪能できる内容になっています。温泉も楽しめるので、リラックスしながら充実した旅行ができるでしょう。に基づいた旅行プランを作
│              成してください。
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
║ Output:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│   assistant: **新潟旅行プラン**
│              
│              ### 1日目: 新潟市探索
│              新潟駅に到着したら、まずレンタカーを借りて新潟市内を巡りましょう。万代シティで地元のカフェに立ち寄り、さらにショッピングを楽しんでから、新潟グルメ街
│              へ向かいます。ここでは名物のへぎそばを堪能し、腹ごしらえをした後、新潟市美術館で地元アーティストの作品を鑑賞します。午後には新潟県立自然科学館を訪れ、科学や自然の楽しさを
│              体験した後、新潟港の歴史を学べる新潟市歴史博物館・みなとぴあを訪れます。夜には「Japanese Restaurant 魚河岸」で新鮮な海の幸を味わい、さらに「新潟万代島
│              復興市場」でお土産を探して旅のスタートを飾ります。
│              
│              ### 2日目: 村上市・鮭と温泉
│              新潟市から村上市へのドライブを楽しみながら、朝の美しい風景を満喫してください。最初に向かうのは「鮭のふるさと」で、鮭に関する知識を深めて、地元の鮭
│              料理を試食します。続いて、村上名物の「鮭の寿司」を楽しみ、次は村上大祭を観光。これを堪能した後は、「石打丸山温泉」で贅沢な温泉体験をしましょう。地元の食材を使用した夕食を
│              旅館で楽しみながら、温泉で身も心もリフレッシュできる時間を過ごします。
│              
│              ### 3日目: 佐渡島探訪
│              早朝にはフェリーで佐渡島に向かいましょう。約1時間の船旅の後、佐渡金山を訪れて江戸時代の金採掘の歴史を学びます。昼食には佐渡名物の「アジのたたき」に
│              舌鼓を打ち、佐渡の日本酒を味わいましょう。その後は「尖閣湾揚島遊園」で美しい島の自然を楽しむことができます。観光バスを利用して他の見どころを巡るのもおすすめです。夕方には
│              新潟港に戻り、楽しかった旅の締めくくりをしながら帰路に着きましょう。この旅行プランでは、新潟の自然、美食、文化を余すところなく楽しむことができ、心身ともにリフレッシュでき
│              ることでしょう。
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
║ choose_the_best_plan(['新潟県を存分..)
╠══════════════════════════════════════════════════════════════════════════════════════════════════╣
║ Prompt:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│      system: あなたは旅行プランのベテラン編集者です。
│
│        user: 以下のリストから最適な旅行プランを選んでください:
│              新潟県を存分に楽しむための3日間の旅行プランをご提案します。このプランでは新潟の魅力的な自然、美食、温泉、そして伝統文化を体験できる内容となっています。
│              ### 1日目: 新潟市内文化探訪
│              - **午前**
│                新潟駅に到着後、まずは新潟市歴史博物館を訪れましょう。ここでは新潟の豊かな歴史や文化について学ぶことができます。その後、地元の名物である長岡生姜醤油ラーメン
│              をランチに楽しむのがおすすめです。
│              - **午後**
│                ランチの後は、新潟港にある海洋館「マリンピア日本海」を訪れ、海の生物たちと触れ合いながら楽しいひと時を過ごします。また、萬代橋を散策し、美しい景観を堪能した
│              後、新潟名物の鮮魚料理で夕食を楽しみましょう。
│              ### 2日目: 自然と温泉の癒しの旅
│              - **午前**
│                妙高高原へ向かい、豊かな自然に囲まれたハイキングを楽しんでください。四季折々の美しい景色が楽しめ、心身ともにリフレッシュできます。ハイキング後は、近くの蕎麦
│              屋で地元の手打ち蕎麦を堪能しましょう。
│              - **午後**
│                赤倉温泉で温泉につかり、日々の疲れを癒す時間を持つのも良いでしょう。季節によってスキーやゴルフも楽しめるため、アクティビティを選ぶことができます。最後は温泉
│              宿に宿泊し、宿の懐石料理で優雅なディナーを楽しみましょう。
│              ### 3日目: 伝統文化と特産品の探求
│              - **午前**
│                直江津の町を散策し、伝統的な街並みや地元の商店を巡ります。高田公園では、季節の花や美しい風景を楽しみながらリラックスすることができます。昼食には、新鮮な地元
│              の海鮮丼を味わってください。
│              - **午後**
│                午後は新潟県魚沼市へ移動し、こだわりの魚沼産コシヒカリを体験するアクティビティに参加します。米作りを学びながら、地域の風土を感じることができる貴重な体験です
│              。夕方には新潟市に戻り、笹団子や日本酒などお土産の購入をお忘れなく!
│              この3日間のプランでは、新潟の素晴らしい自然、美味しい食事、伝統文化や温泉を盛り込み、充実した旅行を楽しむことができるでしょう。素敵な旅をお過ごしください!
│              新潟はその美しい自然や文化、そして豊かな食文化が非常に魅力的な地域です。ここでは、3日間にわたる新潟旅行プランをご提案します。このプランでは、観光、体験、そして
│              リラクゼーションを組み合わせて、充実した旅を楽しむことができます。
│              ### 1日目: 新潟市内観光と美食体験
│              まず、新潟市を訪れたら「新潟市歴史博物館」で新潟の歴史や文化を学び、その後、名物「萬代橋」を散策しましょう。午後には「新潟伊勢丹」でショッピングを楽しんだ後、風
│              情ある「古町地区」を散策し、カフェでひと休み。夕食には、新潟の地酒と共に新鮮な海鮮料理を堪能し、地元の人々との交流も楽しみましょう。
│              ### 2日目: 文化体験と自然探訪
│              午前中は、地元の手作り体験として笹団子作りに挑戦します。自分で作った笹団子はお土産に最適です。その後、日本海の美しい景色を楽しむためにドライブへ出かけ、佐渡島へ
│              のフェリーに乗りましょう。佐渡では、歴史的な名所や自然の美しさを体験でき、特に新鮮な海の幸を楽しむ夕食は外せません。
│              ### 3日目: 温泉と自然の癒し
│              最終日は、温泉でリラックスしてスタートしましょう。「新津温泉」や「赤倉温泉」で日帰り入浴を楽しみ、ほっと一息ついてください。その後、妙高高原へ移動し、四季折々の
│              美しい自然を散策します。午後は少し観光を楽しんだ後、名残惜しさを感じながら新潟市へ戻り、新潟空港もしくは新潟駅から帰路につきましょう。
│              この3日間のプランで、新潟の多様な魅力を存分に体験し、心に残る旅行を楽しんでください。旅の忘れ物として、カメラや歩きやすい靴をお忘れなく!
│              新潟の魅力を満喫する3日間の旅行プランをご提案いたします。自然の美しさ、おいしい食文化、そして温泉を存分に楽しみつつ、新潟の素晴らしい体験をお届けします。
│              ### 1日目:新潟市の魅力を味わう
│              - **午前:新潟駅周辺での朝食**
│                - 新潟名物「へぎ蕎麦」や「タレカツ丼」、地元のカフェで新潟の朝を楽しみます。美味しい朝食でエネルギーを充電します。
│              - **昼食:新潟の海鮮丼を堪能**
│                - 新潟の豊かな海の幸を使った海鮮丼を味わえるお店を訪れ、商業港の新鮮な魚介類を楽しむ贅沢なランチタイムです。
│              - **午後:白山公園と地酒**
│                - 散策後、新潟特有の地酒を提供する地元の居酒屋へ。昼間に散策した公園の美しい風景を思い返しながら、地域の味を楽しみましょう。
│              ### 2日目:上越・妙高エリアの自然
│              - **午前:上越市で歴史探索**
│                - 上越城を見学し、その歴史を学びながら美しい景色を堪能します。県内の文化遺産に触れつつ、記念写真を撮りましょう。
│              - **昼食:上越名物の「高田うどん」**
│                - 地元で人気のうどん店で、あたたかいおうどんを楽しんだ後、妙高高原へ向かいます。
│              - **午後:妙高高原でアクティビティ**
│                - トレッキングを楽しんだり、自然の美しさを満喫したりするために、大自然に身を委ねます。日帰りの温泉で心身ともにリフレッシュしましょう。
│              ### 3日目:佐渡島日帰り探訪
│              - **朝:フェリーで佐渡島へ**
│                - 新潟港からのフェリーは、快適な船旅で美しい風景を眺めながら佐渡島へ移動。海の上で静かな時間を過ごします。
│              - **午前:佐渡金山見学**
│                - 歴史深い佐渡金山を訪れ、当時の採掘の様子やその歴史を学び、観光名所を見学します。
│              - **昼食:新鮮なお魚料理**
│                - 佐渡ならではの新鮮なお魚料理を提供するレストランで、地酒と共に堪能します。
│              - **午後:たらい舟体験で冒険**
│                - たらい舟に乗り、海の感触を楽しみながら美しい景勝地を訪れます。心に残る思い出をお作りください。
│              - **夕方:新潟に戻り帰路へ**
│                - フェリーで新潟に戻り、心温まる思い出を抱いて帰路につきます。
│              このプランを参考に、新潟の豊かな自然と文化を心ゆくまで楽しんでください!
│              **新潟旅行プラン**
│              ### 1日目: 新潟市探索
│              新潟駅に到着したら、まずレンタカーを借りて新潟市内を巡りましょう。万代シティで地元のカフェに立ち寄り、さらにショッピングを楽しんでから、新潟グルメ街へ向かいます
│              。ここでは名物のへぎそばを堪能し、腹ごしらえをした後、新潟市美術館で地元アーティストの作品を鑑賞します。午後には新潟県立自然科学館を訪れ、科学や自然の楽しさを体
│              験した後、新潟港の歴史を学べる新潟市歴史博物館・みなとぴあを訪れます。夜には「Japanese Restaurant
│              魚河岸」で新鮮な海の幸を味わい、さらに「新潟万代島復興市場」でお土産を探して旅のスタートを飾ります。
│              ### 2日目: 村上市・鮭と温泉
│              新潟市から村上市へのドライブを楽しみながら、朝の美しい風景を満喫してください。最初に向かうのは「鮭のふるさと」で、鮭に関する知識を深めて、地元の鮭料理を試食しま
│              す。続いて、村上名物の「鮭の寿司」を楽しみ、次は村上大祭を観光。これを堪能した後は、「石打丸山温泉」で贅沢な温泉体験をしましょう。地元の食材を使用した夕食を旅館
│              で楽しみながら、温泉で身も心もリフレッシュできる時間を過ごします。
│              ### 3日目: 佐渡島探訪
│              早朝にはフェリーで佐渡島に向かいましょう。約1時間の船旅の後、佐渡金山を訪れて江戸時代の金採掘の歴史を学びます。昼食には佐渡名物の「アジのたたき」に舌鼓を打ち、
│              佐渡の日本酒を味わいましょう。その後は「尖閣湾揚島遊園」で美しい島の自然を楽しむことができます。観光バスを利用して他の見どころを巡るのもおすすめです。夕方には新
│              潟港に戻り、楽しかった旅の締めくくりをしながら帰路に着きましょう。この旅行プランでは、新潟の自然、美食、文化を余すところなく楽しむことができ、心身ともにリフレッ
│              シュできることでしょう。.
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
║ Output:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│   assistant: 新潟県を存分に楽しむための3日間の旅行プランを以下のようにご提案いたします。このプランでは、新潟の自然、美食、温泉、そして伝統文化をバランスよく体験
│              できる内容となっています。
│              
│              ### 1日目: 新潟市内文化探訪
│              - **午前**  
│                新潟駅に到着後、まずは新潟市歴史博物館を訪れましょう。ここでは新潟の豊かな歴史や文化について学ぶことができます。その後、地元の名物である長岡生姜
│              醤油ラーメンをランチに楽しむのがおすすめです。
│              
│              - **午後**  
│                ランチの後は、新潟港にある海洋館「マリンピア日本海」を訪れ、海の生物たちと触れ合いながら楽しいひと時を過ごします。また、萬代橋を散策し、美しい景
│              観を堪能した後、新潟名物の鮮魚料理で夕食を楽しみましょう。
│              
│              ### 2日目: 自然と温泉の癒しの旅
│              - **午前**  
│                妙高高原へ向かい、豊かな自然に囲まれたハイキングを楽しんでください。四季折々の美しい景色が楽しめ、心身ともにリフレッシュできます。ハイキング後は
│              、近くの蕎麦屋で地元の手打ち蕎麦を堪能しましょう。
│              
│              - **午後**  
│                赤倉温泉で温泉につかり、日々の疲れを癒す時間を持つのも良いでしょう。季節によってスキーやゴルフも楽しめるため、アクティビティを選ぶことができます
│              。最後は温泉宿に宿泊し、宿の懐石料理で優雅なディナーを楽しみましょう。
│              
│              ### 3日目: 伝統文化と特産品の探求
│              - **午前**  
│                直江津の町を散策し、伝統的な街並みや地元の商店を巡ります。高田公園では、季節の花や美しい風景を楽しみながらリラックスすることができます。昼食には
│              、新鮮な地元の海鮮丼を味わってください。
│              
│              - **午後**  
│                午後は新潟県魚沼市へ移動し、こだわりの魚沼産コシヒカリを体験するアクティビティに参加します。米作りを学びながら、地域の風土を感じることができる貴
│              重な体験です。夕方には新潟市に戻り、笹団子や日本酒などお土産の購入をお忘れなく!
│              
│              この3日間のプランでは、新潟の素晴らしい自然、美味しい食事、伝統文化や温泉を盛り込み、充実した旅行を楽しむことができるでしょう。素敵な旅をお過ごし
│              ください!
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════════════════════════════╗
║ write_a_perfect_travel_plan(新潟)
╠══════════════════════════════════════════════════════════════════════════════════════════════════╣
║ Prompt:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│      system: あなたは一流の旅行プランナーで、完璧なプランを作成してください。
│
│        user: この旅行プランを最終的に仕上げてください: 新潟県を存分に楽しむための3日間の旅行プランを以下のようにご提案いたします。このプランでは、新潟の自然、美食、温泉、
│              そして伝統文化をバランスよく体験できる内容となっています。
│              ### 1日目: 新潟市内文化探訪
│              - **午前**
│                新潟駅に到着後、まずは新潟市歴史博物館を訪れましょう。ここでは新潟の豊かな歴史や文化について学ぶことができます。その後、地元の名物である長岡生姜醤油ラーメン
│              をランチに楽しむのがおすすめです。
│              - **午後**
│                ランチの後は、新潟港にある海洋館「マリンピア日本海」を訪れ、海の生物たちと触れ合いながら楽しいひと時を過ごします。また、萬代橋を散策し、美しい景観を堪能した
│              後、新潟名物の鮮魚料理で夕食を楽しみましょう。
│              ### 2日目: 自然と温泉の癒しの旅
│              - **午前**
│                妙高高原へ向かい、豊かな自然に囲まれたハイキングを楽しんでください。四季折々の美しい景色が楽しめ、心身ともにリフレッシュできます。ハイキング後は、近くの蕎麦
│              屋で地元の手打ち蕎麦を堪能しましょう。
│              - **午後**
│                赤倉温泉で温泉につかり、日々の疲れを癒す時間を持つのも良いでしょう。季節によってスキーやゴルフも楽しめるため、アクティビティを選ぶことができます。最後は温泉
│              宿に宿泊し、宿の懐石料理で優雅なディナーを楽しみましょう。
│              ### 3日目: 伝統文化と特産品の探求
│              - **午前**
│                直江津の町を散策し、伝統的な街並みや地元の商店を巡ります。高田公園では、季節の花や美しい風景を楽しみながらリラックスすることができます。昼食には、新鮮な地元
│              の海鮮丼を味わってください。
│              - **午後**
│                午後は新潟県魚沼市へ移動し、こだわりの魚沼産コシヒカリを体験するアクティビティに参加します。米作りを学びながら、地域の風土を感じることができる貴重な体験です
│              。夕方には新潟市に戻り、笹団子や日本酒などお土産の購入をお忘れなく!
│              この3日間のプランでは、新潟の素晴らしい自然、美味しい食事、伝統文化や温泉を盛り込み、充実した旅行を楽しむことができるでしょう。素敵な旅をお過ごしください!.
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
║ Output:
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
│   assistant: この新潟県の3日間の旅行プランは、自然、食文化、温泉、そして伝統を存分に楽しむためのものです。以下は、各日の詳細なスケジュールとおすすめのアクティビ
│              ティです。
│              
│              ### 1日目: 新潟市内文化探訪
│              - **午前**
│                - 新潟駅に到着後、新潟市歴史博物館へ。新潟の歴史と文化の深い理解を得ることができます。
│                - 歴史博物館の見学後、長岡生姜醤油ラーメンで地元の味を楽しみます。
│              
│              - **午後**
│                - ランチ後、マリンピア日本海で海の生物とのふれあいを楽しみます。
│                - 萬代橋を散策し、新潟の美しい景観を堪能。
│                - 夕食は新潟の鮮魚を使った料理を堪能。
│              
│              ### 2日目: 自然と温泉の癒しの旅
│              - **午前**
│                - 妙高高原でのハイキング。自然の中でリフレッシュし、四季折々の景色を楽しむ。
│                - ハイキング後は、地元の手打ち蕎麦を味わいます。
│              
│              - **午後**
│                - 赤倉温泉でリラックス。温泉で疲れを癒し、季節に応じてスキーやゴルフを楽しむことも。
│                - 温泉宿での宿泊と、懐石料理でのディナー。
│              
│              ### 3日目: 伝統文化と特産品の探求
│              - **午前**
│                - 直江津の町を散策し、伝統的な街並みや地元の商店を訪れます。
│                - 高田公園で季節の花や風景を楽しみ、新鮮な海鮮丼を昼食に。
│              
│              - **午後**
│                - 魚沼市へ移動し、魚沼産コシヒカリの生産体験。米作りを学び、地域の風土を感じる。
│                - 夕方に新潟市に戻り、笹団子や日本酒などのお土産を購入。
│              
│              このプランは、新潟県の魅力を最大限に体験できるように設計されています。自然の美しさ、地元の美食、温泉の癒し、そして伝統文化の探求を通じて、訪れるすべ
│              ての人にとって忘れられない旅行になることでしょう。旅の準備をお楽しみください!
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
この新潟県の3日間の旅行プランは、自然、食文化、温泉、そして伝統を存分に楽しむためのものです。以下は、各日の詳細なスケジュールとおすすめのアクティビティです。

### 1日目: 新潟市内文化探訪
- **午前**
  - 新潟駅に到着後、新潟市歴史博物館へ。新潟の歴史と文化の深い理解を得ることができます。
  - 歴史博物館の見学後、長岡生姜醤油ラーメンで地元の味を楽しみます。

- **午後**
  - ランチ後、マリンピア日本海で海の生物とのふれあいを楽しみます。
  - 萬代橋を散策し、新潟の美しい景観を堪能。
  - 夕食は新潟の鮮魚を使った料理を堪能。

### 2日目: 自然と温泉の癒しの旅
- **午前**
  - 妙高高原でのハイキング。自然の中でリフレッシュし、四季折々の景色を楽しむ。
  - ハイキング後は、地元の手打ち蕎麦を味わいます。

- **午後**
  - 赤倉温泉でリラックス。温泉で疲れを癒し、季節に応じてスキーやゴルフを楽しむことも。
  - 温泉宿での宿泊と、懐石料理でのディナー。

### 3日目: 伝統文化と特産品の探求
- **午前**
  - 直江津の町を散策し、伝統的な街並みや地元の商店を訪れます。
  - 高田公園で季節の花や風景を楽しみ、新鮮な海鮮丼を昼食に。

- **午後**
  - 魚沼市へ移動し、魚沼産コシヒカリの生産体験。米作りを学び、地域の風土を感じる。
  - 夕方に新潟市に戻り、笹団子や日本酒などのお土産を購入。

このプランは、新潟県の魅力を最大限に体験できるように設計されています。自然の美しさ、地元の美食、温泉の癒し、そして伝統文化の探求を通じて、訪れるすべての人にとって忘れられない旅行になることでしょう。旅の準備をお楽しみください!

ストーリングとバージョン管理

ellでは、ストーリングとバージョン管理を使用して、プロンプトを管理し、バージョンを追跡することができます。

ell.init(store='./logdir', autocommit=True, verbose=True)

これでディレクトリにストアを設定し、オートコミットを有効にします。ellは、全てのプロンプトとそのバージョン、さらにBLOBストアを./logdirに保存します。

ell-studioを使用してプロンプトを確認する

バージョン管理を有効にしてスクリプトを実行した後、ell-studioを使用してプロンプトを確認できます。ターミナルで以下のコマンドを実行してください:

ell-studio --storage ./logdir
INFO:     Started server process [31709]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:5555 (Press CTRL+C to quit)
Database file found: ./logdir

ブラウザでhttp://127.0.0.1:5555にアクセスすると、LMPの可視化や依存関係を確認できます。

image
image
image

先ほどのコードをちょっと修正して、再度実行してみましょう。
実行が完了したら、バージョン2との比較ができます。

image
image

@ell.complexを利用する

@ell.simpleはテキストを返す単純な作業に対応するためのシンプルな方法ですが、実際のAIアプリケーション開発ではマルチモーダルコンテンツ、構造化された出力、複雑なインタラクションを処理し生成する需要も高いため、ここで登場するのが@ell.complexです。
このデコレーターは、マルチモーダル入力/出力、構造化データ、ツールの使用など、言語モデルとの高度なインタラクションを処理するために設計されています。これで画像の処理、構造化データの生成、関数呼び出し、複数回の会話をするような進化した機能を活用できるようになります。

import ell
from pydantic import BaseModel, Field

class RestaurantReview(BaseModel):
    name: str = Field(description="レストランの名前")
    rating: int = Field(description="10点満点の評価")
    summary: str = Field(description="レストランの簡単な概要")

@ell.complex(model="gpt-4o-2024-08-06", response_format=RestaurantReview)
def generate_restaurant_review(restaurant: str):
    """あなたはレストランレビューを行う専門家です。指定されたレストランに対する構造化されたレビューを返します。"""
    return f"{restaurant}のレビューを作成してください。"

review_message = generate_restaurant_review("はま寿司")
review = review_message.parsed
print(f"レストラン: {review.name}, 評価: {review.rating}/10")
print(f"概要: {review.summary}")
アウトプット
╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ generate_restaurant_review(はま寿司)
╠═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
║ Prompt:
╟─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
│      system: あなたはレストランレビューを行う専門家です。指定されたレストランに対する構造化されたレビューを返します。
│
│        user: はま寿司のレビューを作成してください。
╟─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║ Output:
╟─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
│   assistant: 
│              {"name":"はま寿司","rating":8,"summary":"はま寿司は、手頃な価格で種類豊富な寿司を楽しむことができる人気の回転寿司チェーンです。豊富なメニューには、伝統的な握り寿司から創作寿司まであり、様々な味を楽しむことができます。また、デジタルオーダーシステムを採用しているため、迅速かつ正確なサービスが提供され、待ち時間も比較的短いです。家族連れや友人とのカジュアルな食事に最適な場所です。"}
╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
レストラン: はま寿司, 評価: 8/10
概要: はま寿司は、手頃な価格で種類豊富な寿司を楽しむことができる人気の回転寿司チェーンです。豊富なメニューには、伝統的な握り寿司から創作寿司まであり、様々な味を楽しむことができます。また、デジタルオーダーシステムを採用しているため、迅速かつ正確なサービスが提供され、待ち時間も比較的短いです。家族連れや友人とのカジュアルな食事に最適な場所です。

おまけ: AI Gatewayのセットアップ

ellはカスタムクライアントを指定できるので、cloudflareのAI Gatewayとセットアップしてコスト削減しましょう!
AI Gatewayのセットアップはこちらを参照してください。

import ell
import os
import openai

api_key = os.getenv("OPENAI_API_KEY")
account_id = "your account id"
gateway_id = "your gateway id"
base_url = f"https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/openai"

client = openai.OpenAI(api_key=api_key, base_url=base_url)

@ell.simple(model="gpt-4o", client=client)
def my_lmp(prompt: str):
    return f"Respond to: {prompt}"

result = my_lmp("Hello, world!")
print(result)

まとめ

以上でellの使い方を紹介しました。
プロンプトエンジニアリングのツールとしてとても使いやすく、ell-studioの機能も魅力的ではないかと思います。

Discussion