diff --git a/README.md b/README.md index b698bb8..8fca6b4 100644 --- a/README.md +++ b/README.md @@ -6,75 +6,8 @@ # template-langgraph -This is a template repository for Python +A comprehensive LangGraph template for building AI Agents with Python. -## Prerequisites +## Documentation -- [Python 3.10+](https://www.python.org/downloads/) -- [uv](https://docs.astral.sh/uv/getting-started/installation/) -- [GNU Make](https://www.gnu.org/software/make/) - -## Development instructions - -### Local development - -Use Makefile to run the project locally. - -```shell -# help -make - -# install dependencies for development -make install-deps-dev - -# run tests -make test - -# run CI tests -make ci-test -``` - -### Docker development - -```shell -# build docker image -make docker-build - -# run docker container -make docker-run - -# run CI tests in docker container -make ci-test-docker -``` - -## Deployment instructions - -### Docker Hub - -To publish the docker image to Docker Hub, you need to [create access token](https://app.docker.com/settings/personal-access-tokens/create) and set the following secrets in the repository settings. - -```shell -gh secret set DOCKERHUB_USERNAME --body $DOCKERHUB_USERNAME -gh secret set DOCKERHUB_TOKEN --body $DOCKERHUB_TOKEN -``` - -### Azure Static Web Apps - -```shell -RESOURCE_GROUP_NAME=your-resource-group-name -SWA_NAME=your-static-web-app-name - -# Create a static app -az staticwebapp create --name $SWA_NAME --resource-group $RESOURCE_GROUP_NAME - -# Retrieve the API key -AZURE_STATIC_WEB_APPS_API_TOKEN=$(az staticwebapp secrets list --name $SWA_NAME --query "properties.apiKey" -o tsv) - -# Set the API key as a GitHub secret -gh secret set AZURE_STATIC_WEB_APPS_API_TOKEN --body $AZURE_STATIC_WEB_APPS_API_TOKEN -``` - -Refer to the following links for more information: - -- [Deploying to Azure Static Web App](https://docs.github.com/en/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) -- [Create a static web app: `az staticwebapp create`](https://learn.microsoft.com/en-us/cli/azure/staticwebapp?view=azure-cli-latest#az-staticwebapp-create) +See the [documentation](https://ks6088ts-labs.github.io/template-langgraph/) for more information. diff --git a/docs/deployment.md b/docs/deployment.md new file mode 100644 index 0000000..12ab595 --- /dev/null +++ b/docs/deployment.md @@ -0,0 +1,31 @@ +## Deployment instructions + +### Docker Hub + +To publish the docker image to Docker Hub, you need to [create access token](https://app.docker.com/settings/personal-access-tokens/create) and set the following secrets in the repository settings. + +```shell +gh secret set DOCKERHUB_USERNAME --body $DOCKERHUB_USERNAME +gh secret set DOCKERHUB_TOKEN --body $DOCKERHUB_TOKEN +``` + +### Azure Static Web Apps + +```shell +RESOURCE_GROUP_NAME=your-resource-group-name +SWA_NAME=your-static-web-app-name + +# Create a static app +az staticwebapp create --name $SWA_NAME --resource-group $RESOURCE_GROUP_NAME + +# Retrieve the API key +AZURE_STATIC_WEB_APPS_API_TOKEN=$(az staticwebapp secrets list --name $SWA_NAME --query "properties.apiKey" -o tsv) + +# Set the API key as a GitHub secret +gh secret set AZURE_STATIC_WEB_APPS_API_TOKEN --body $AZURE_STATIC_WEB_APPS_API_TOKEN +``` + +Refer to the following links for more information: + +- [Deploying to Azure Static Web App](https://docs.github.com/en/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) +- [Create a static web app: `az staticwebapp create`](https://learn.microsoft.com/en-us/cli/azure/staticwebapp?view=azure-cli-latest#az-staticwebapp-create) diff --git a/docs/development.md b/docs/development.md new file mode 100644 index 0000000..267c886 --- /dev/null +++ b/docs/development.md @@ -0,0 +1,39 @@ +## Development instructions + +### Local development + +Use Makefile to run the project locally. + +```shell +# help +make + +# install dependencies for development +make install-deps-dev + +# run tests +make test + +# run CI tests +make ci-test +``` + +### Testing + +```shell +# Run all tests for AI agents +bash scripts/test_all.sh +``` + +### Docker development + +```shell +# build docker image +make docker-build + +# run docker container +make docker-run + +# run CI tests in docker container +make ci-test-docker +``` diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 0000000..19126b1 --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,21 @@ +## FAQ + +### Docker Compose で Elasticsearch を起動できない + +**現象:** + +WSL2 上で `docker compose up elasticsearch` を実行した際に、以下のエラーが発生する + +`java.lang.IllegalStateException: failed to obtain node locks, tried [/usr/share/elasticsearch/data]; maybe these locations are not writable or multiple nodes were started on the same data path?` + +**原因:** + +Elasticsearch がデータディレクトリ(/usr/share/elasticsearch/data)にロックファイルを作成できないことを示しています。 + +**対処方法:** + +ディレクトリの権限を修正するために、以下のコマンドを実行してください。 + +```shell +sudo chown -R 1000:1000 ./assets/es_data +``` diff --git a/docs/images/jupyterlab.png b/docs/images/jupyterlab.png new file mode 100644 index 0000000..8fd7535 Binary files /dev/null and b/docs/images/jupyterlab.png differ diff --git a/docs/images/langgraph-studio.png b/docs/images/langgraph-studio.png new file mode 100644 index 0000000..c9b16a7 Binary files /dev/null and b/docs/images/langgraph-studio.png differ diff --git a/docs/index.md b/docs/index.md index fdde40a..8939e76 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,39 +1,253 @@ -# template-langgraph +# LangGraph AI Agent Template -## Overview +A comprehensive template project for building AI agents using [LangGraph](https://langchain-ai.github.io/langgraph/), demonstrating various agent patterns, tool integration, and real-world use cases. + +## What is LangGraph? + +[LangGraph](https://langchain-ai.github.io/langgraph/) is a framework built on top of [LangChain](https://python.langchain.com/) that enables you to create stateful, multi-agent workflows. Unlike traditional chatbots that handle single interactions, LangGraph allows you to build complex AI systems that can: + +- Maintain conversation state across multiple turns +- Use tools and external APIs +- Implement complex reasoning patterns +- Coordinate multiple AI agents +- Handle cyclical workflows and conditional logic + +This template demonstrates these capabilities through practical examples using a fictional system called "KABUTO" for troubleshooting scenarios. + +## Project Overview + +This project showcases different AI agent patterns and architectures, from simple tool-calling agents to complex multi-agent systems. The examples use a fictional technical support scenario to demonstrate how agents can retrieve information from multiple data sources and provide structured responses. + +### Why This Template Exists + +Most AI applications need to: + +1. **Access external information** - LLMs don't have access to your specific data +2. **Use tools** - Perform actions beyond text generation +3. **Maintain context** - Remember previous interactions +4. **Handle complex workflows** - Break down tasks into manageable steps + +This template provides working examples of all these patterns using LangGraph. + +## Prerequisites + +- [Python 3.10+](https://www.python.org/downloads/) +- [uv](https://docs.astral.sh/uv/getting-started/installation/) - Modern Python package manager +- [GNU Make](https://www.gnu.org/software/make/) - For running common tasks +- [Docker](https://www.docker.com/) - For running vector databases (optional) + +## Quick Start + +### 1. Environment Setup ```shell -# Set up environment +# Clone the repository +git clone https://github.com/ks6088ts-labs/template-langgraph.git +cd template-langgraph + +# Install Python dependencies +uv sync --all-extras + +# Create environment configuration +cp .env.template .env +# Edit .env with your API keys (Azure OpenAI, etc.) +``` + +### 2. Start Supporting Services (Optional) + +For full functionality, start the vector databases: + +```shell +# Start Qdrant and Elasticsearch using Docker docker compose up -d ``` -## Testing +### 3. Initialize Data Sources + +**Set up Qdrant vector database:** + +```shell +uv run python scripts/qdrant_operator.py add-documents \ + --collection-name qa_kabuto \ + --verbose +``` + +**Set up Elasticsearch search index:** + +```shell +uv run python scripts/elasticsearch_operator.py create-index \ + --index-name docs_kabuto \ + --verbose +``` + +## Project Structure + +### Core Components + +- **`data/`** - Sample data for the fictional KABUTO system (PDFs, FAQs, troubleshooting guides) +- **`template_langgraph/`** - Main Python package containing all agent implementations +- **`notebooks/`** - Jupyter notebooks with interactive examples and explanations +- **`scripts/`** - Command-line tools for running agents + +### Agent Examples (`template_langgraph/agents/`) + +This project includes several agent implementations, each demonstrating different LangGraph patterns: + +#### 1. `kabuto_helpdesk_agent/` - **Start Here!** + +A simple agent using LangGraph's prebuilt `create_react_agent` function. This is the best starting point for understanding the basics. + +**Key concepts:** ReAct pattern, tool calling, prebuilt agents + +#### 2. `chat_with_tools_agent/` - **Core Implementation** + +A manual implementation of the same logic as the helpdesk agent, showing how LangGraph workflows are built from scratch. + +**Key concepts:** Graph construction, state management, node functions, edges + +#### 3. `issue_formatter_agent/` - **Structured Output** + +Demonstrates how to get structured data from AI responses using Pydantic models. + +**Key concepts:** Structured output, data validation, response formatting + +#### 4. `task_decomposer_agent/` - **Planning & Decomposition** + +Shows how to break down complex tasks into smaller, manageable steps. + +**Key concepts:** Task planning, multi-step reasoning, conditional workflows + +#### 5. `supervisor_agent/` - **Multi-Agent Coordination** + +Implements the supervisor pattern where one agent coordinates multiple specialized agents. + +**Key concepts:** Multi-agent systems, agent coordination, supervisor patterns + +### Supporting Modules + +- **`template_langgraph/llms/`** - LLM API wrappers (Azure OpenAI, etc.) +- **`template_langgraph/tools/`** - Tool implementations for search, data retrieval +- **`template_langgraph/utilities/`** - Helper functions for document loading and processing + +## Running the Examples + +### Option 1: LangGraph Studio (Recommended for Development) + +[LangGraph Studio](https://langchain-ai.github.io/langgraph/concepts/langgraph_studio/) provides a visual interface for developing and debugging agents: + +```shell +uv run langgraph dev +``` + +This opens a web interface where you can: + +- Visualize agent workflows +- Step through executions +- Debug state transitions +- Test different inputs + +![langgraph-studio.png](./images/langgraph-studio.png) + +### Option 2: Jupyter Notebooks (Best for Learning) + +Interactive notebooks with explanations and examples: + +```shell +uv run jupyter lab +# Navigate to http://localhost:8888 and open notebooks/*.ipynb +``` + +![jupyterlab.png](./images/jupyterlab.png) -see [test_all.sh](../scripts/test_all.sh) for all operations +### Option 3: Command Line (Production-like) + +Run agents from the terminal: ```shell -# Test all scripts -bash scripts/test_all.sh +uv run python scripts/agent_operator.py run \ + --name "chat_with_tools_agent" \ + --question "KABUTO startup issue: screen flashes purple and system freezes" \ + --verbose ``` -## References +Example output showing the agent's reasoning process: + +```text +Event: {'chat_with_tools': {'messages': [AIMessage(content='', tool_calls=[ + {'name': 'search_elasticsearch', 'args': {'keywords': 'KABUTO startup purple flashing freeze'}}, + {'name': 'search_qdrant', 'args': {'keywords': 'KABUTO startup purple flashing freeze'}} +])]}} + +Event: {'tools': {'messages': [ToolMessage(content='Found documentation about startup protocol...')]}} + +Event: {'chat_with_tools': {'messages': [AIMessage(content=' +### Problem Analysis +The purple screen flashing during KABUTO startup indicates a "Shinobi Protocol" initialization failure... + +### Solution +1. **Disconnect peripheral devices**: Unplug all connected devices for 5+ seconds +2. **Clear external clock cache**: This resolves clock synchronization issues +3. **Restart KABUTO**: Use the "Dragon Ball" button for 5+ seconds if needed +')]}} +``` + +## Key Concepts Demonstrated + +### 1. **ReAct Pattern** (Reasoning + Acting) + +The foundation of modern AI agents - the ability to reason about what to do, take actions, and reason about the results. + +### 2. **Tool Calling** + +How agents can use external functions to: + +- Search databases (Elasticsearch, Qdrant) +- Call APIs +- Process files +- Execute calculations + +### 3. **State Management** + +How LangGraph maintains context across multiple interaction steps, enabling complex multi-turn conversations. + +### 4. **Conditional Workflows** + +Using graph structures to create branching logic based on agent decisions or external conditions. + +### 5. **Multi-Agent Systems** + +Coordinating multiple specialized agents to handle complex tasks that require different expertise. + +## Data Sources Explained + +The project uses fictional data about a system called "KABUTO" to demonstrate real-world scenarios: + +- **`data/docs_kabuto.pdf`** - Technical documentation (simulates user manuals) +- **`data/qa_kabuto.csv`** - FAQ database (simulates past support tickets) +- **`data/docs_kabuto.md`** - Additional documentation + +This fictional data serves a purpose: it proves that the AI agents can work with information that isn't in the LLM's training data, demonstrating the value of retrieval-augmented generation (RAG). -### LangGraph +## Next Steps -- [Build a custom workflow](https://langchain-ai.github.io/langgraph/concepts/why-langgraph/) -- [LangGraphの(LLMなし)Human-in-the-loopを試してみた](https://qiita.com/te_yama/items/db38201af60dec76384d) -- [🤖 LangGraph Multi-Agent Supervisor](https://github.com/langchain-ai/langgraph-supervisor-py) -- [Software Design誌「実践LLMアプリケーション開発」第24回サンプルコード](https://github.com/mahm/softwaredesign-llm-application/tree/main/24) +1. **Start with the basics**: Run the `kabuto_helpdesk_agent` example +2. **Understand the implementation**: Compare it with `chat_with_tools_agent` +3. **Explore advanced patterns**: Try the task decomposer and supervisor agents +4. **Build your own**: Use this template as a starting point for your use case -### Sample Codes +## Learning Resources -- [「現場で活用するためのAIエージェント実践入門」リポジトリ](https://github.com/masamasa59/genai-agent-advanced-book) +- [LangGraph Documentation](https://langchain-ai.github.io/langgraph/) +- [LangChain Documentation](https://python.langchain.com/) -### Models +## Architecture Examples -- [AzureOpenAIEmbeddings](https://python.langchain.com/docs/integrations/text_embedding/azureopenai/) +This template demonstrates several proven agent architectures: -### Tools +1. **Single Agent with Tools** - Basic tool-calling pattern +2. **ReAct Agent** - Reasoning and acting in loops +3. **Structured Output Agent** - Returning formatted data +4. **Planning Agent** - Breaking down complex tasks +5. **Supervisor Agent** - Coordinating multiple agents -- [CSVLoader](https://python.langchain.com/docs/how_to/document_loader_csv/) -- [Qdrant](https://github.com/qdrant/qdrant) +Each pattern is implemented with clear examples and documentation to help you understand when and how to use them. diff --git a/docs/references.md b/docs/references.md new file mode 100644 index 0000000..59e6f16 --- /dev/null +++ b/docs/references.md @@ -0,0 +1,21 @@ +## References + +### LangGraph + +- [Build a custom workflow](https://langchain-ai.github.io/langgraph/concepts/why-langgraph/) +- [LangGraph の(LLM なし)Human-in-the-loop を試してみた](https://qiita.com/te_yama/items/db38201af60dec76384d) +- [🤖 LangGraph Multi-Agent Supervisor](https://github.com/langchain-ai/langgraph-supervisor-py) +- [Software Design 誌「実践 LLM アプリケーション開発」第 24 回サンプルコード](https://github.com/mahm/softwaredesign-llm-application/tree/main/24) + +### Sample Codes + +- [「現場で活用するための AI エージェント実践入門」リポジトリ](https://github.com/masamasa59/genai-agent-advanced-book) + +### Models + +- [AzureOpenAIEmbeddings](https://python.langchain.com/docs/integrations/text_embedding/azureopenai/) + +### Tools + +- [CSVLoader](https://python.langchain.com/docs/how_to/document_loader_csv/) +- [Qdrant](https://github.com/qdrant/qdrant) diff --git a/mkdocs.yml b/mkdocs.yml index 1953964..746f2e1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,6 +5,10 @@ repo_url: https://github.com/ks6088ts-labs/template-langgraph repo_name: ks6088ts-labs/template-langgraph nav: - Home: index.md + - Development: development.md + - Deployment: deployment.md + - FAQ: faq.md + - References: references.md theme: name: material # https://squidfunk.github.io/mkdocs-material/setup/changing-the-colors/#automatic-light-dark-mode diff --git a/notebooks/chat_with_tools.ipynb b/notebooks/chat_with_tools.ipynb index d260233..8dde646 100644 --- a/notebooks/chat_with_tools.ipynb +++ b/notebooks/chat_with_tools.ipynb @@ -6,6 +6,21 @@ "id": "1f4d669f", "metadata": {}, "outputs": [], + "source": [ + "from dotenv import load_dotenv\n", + "\n", + "_ = load_dotenv(\n", + " override=True,\n", + " verbose=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1e7aea7c-3965-4c2c-b2d5-da9b01598d47", + "metadata": {}, + "outputs": [], "source": [ "from template_langgraph.agents.chat_with_tools_agent.agent import ChatWithToolsAgent\n", "\n", @@ -15,7 +30,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "21bd80ab", "metadata": {}, "outputs": [ @@ -24,11 +39,11 @@ "output_type": "stream", "text": [ "--------------------\n", - "Event: {'chat_with_tools': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_dgZmuEHRra9AoPOF0eDk8hlu', 'function': {'arguments': '{\"keywords\": \"鬼灯 KABUTO 停止 原因 対策\"}', 'name': 'search_qdrant'}, 'type': 'function'}, {'index': 1, 'id': 'call_Ozsm6M8EKcfqBGTEz2AqHVE0', 'function': {'arguments': '{\"keywords\": \"鬼灯 KABUTO 停止 原因 対策\"}', 'name': 'search_elasticsearch'}, 'type': 'function'}]}, response_metadata={'finish_reason': 'tool_calls', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--c1e04748-5dee-4a87-be5d-44ac8904997d-0', tool_calls=[{'name': 'search_qdrant', 'args': {'keywords': '鬼灯 KABUTO 停止 原因 対策'}, 'id': 'call_dgZmuEHRra9AoPOF0eDk8hlu', 'type': 'tool_call'}, {'name': 'search_elasticsearch', 'args': {'keywords': '鬼灯 KABUTO 停止 原因 対策'}, 'id': 'call_Ozsm6M8EKcfqBGTEz2AqHVE0', 'type': 'tool_call'}])]}}\n", + "Event: {'chat_with_tools': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_nHBbATIpo8KOiVnP1BnQ3k9h', 'function': {'arguments': '{\"keywords\": \"鬼灯 KABUTO 停止 原因 対策\"}', 'name': 'search_qdrant'}, 'type': 'function'}, {'index': 1, 'id': 'call_YKc0ttX8N9HRMMB0pxhXcCgU', 'function': {'arguments': '{\"keywords\": \"鬼灯 KABUTO 停止 原因 対策\"}', 'name': 'search_elasticsearch'}, 'type': 'function'}]}, response_metadata={'finish_reason': 'tool_calls', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--dbe68e96-2aaa-49b8-a191-125d6ab3cb86-0', tool_calls=[{'name': 'search_qdrant', 'args': {'keywords': '鬼灯 KABUTO 停止 原因 対策'}, 'id': 'call_nHBbATIpo8KOiVnP1BnQ3k9h', 'type': 'tool_call'}, {'name': 'search_elasticsearch', 'args': {'keywords': '鬼灯 KABUTO 停止 原因 対策'}, 'id': 'call_YKc0ttX8N9HRMMB0pxhXcCgU', 'type': 'tool_call'}])]}}\n", "--------------------\n", - "Event: {'tools': {'messages': [ToolMessage(content='\"[QdrantOutput(file_name=\\'./data/qa_kabuto.csv\\', content=\\'q: 特定のアプリケーション「鬼灯」を実行すると、KABUTOのファンが急に停止し、無音になります。 a: 「鬼灯」は、その特殊な演算処理において、KABUTOの冷却システム「風魔の術」を一時的に停止させ、内部エネルギーの流れを最適化する機能を持っています。これは異常ではありません。ただし、無音状態が15分以上続く場合は、過熱の可能性があるため、アプリケーションを強制終了し、KABUTO本体の電源を一度切ってから再起動してください。\\'), QdrantOutput(file_name=\\'./data/qa_kabuto.csv\\', content=\\'q: KABUTOの電源ランプが、赤と青の交互点滅ではなく、緑色で点滅しています。 a: 通常、電源ランプは赤(待機中)と青(稼働中)の点滅を繰り返します。緑色の点滅は、KABUTOが「禅モード」に入っており、パフォーマンスを最小限に抑え、バックグラウンドでシステム自己修復を行っている状態を示します。この状態では、ユーザー操作はほとんど受け付けられません。このモードから強制的に脱出するには、KABUTO本体の「龍玉」ボタンを5秒以上長押ししてください。\\'), QdrantOutput(file_name=\\'./data/qa_kabuto.csv\\', content=\\'q: KABUTOの画面の隅に、時々「狐火」のような光の点が、不規則に現れては消えます。 a: 「狐火」は、KABUTOの演算コア「稲荷」が、膨大な量のタスクを処理しきれずに、一部の計算結果が視覚的なノイズとして現れている現象です。これは、システム負荷が高いことを示しています。この現象が頻繁に発生する場合は、バックグラウンドで動作している不要なアプリケーションを終了させるか、KABUTOを再起動してください。\\')]\"', name='search_qdrant', id='852006ec-9c76-432a-a8f0-ee9a675f5096', tool_call_id='call_dgZmuEHRra9AoPOF0eDk8hlu'), ToolMessage(content='\"[ElasticsearchOutput(file_name=\\'docs_kabuto.pdf\\', content=\\'docs_kabuto.md 2025-08-01\\\\\\\\n2 / 3\\\\\\\\nた場合、「虚無」エラーが表⽰され、ログインは拒否される。これは疲労やストレスによる精神状態の変化が原因で\\\\\\\\nある可能性があり、深呼吸による精神状態の安定化が解決策となる。\\\\\\\\n3.3 ネットワーク・通信\\\\\\\\nネットワークモジュール「隠れ蓑」は、外部からの不必要なスキャンを回避するため、デフォルトでステルスモード\\\\\\\\nで動作する。これにより、ネットワーク上の他のデバイスから認識されない状態となる。 KABUTO をネットワーク上\\\\\\\\nで可視化させるには、ネットワーク設定画⾯から「忍びの道」オプションを有効にする必要がある。\\\\\\\\n3.4 演算コア\\'), ElasticsearchOutput(file_name=\\'docs_kabuto.pdf\\', content=\\'docs_kabuto.md 2025-08-01\\\\\\\\n2 / 3\\\\\\\\nた場合、「虚無」エラーが表⽰され、ログインは拒否される。これは疲労やストレスによる精神状態の変化が原因で\\\\\\\\nある可能性があり、深呼吸による精神状態の安定化が解決策となる。\\\\\\\\n3.3 ネットワーク・通信\\\\\\\\nネットワークモジュール「隠れ蓑」は、外部からの不必要なスキャンを回避するため、デフォルトでステルスモード\\\\\\\\nで動作する。これにより、ネットワーク上の他のデバイスから認識されない状態となる。 KABUTO をネットワーク上\\\\\\\\nで可視化させるには、ネットワーク設定画⾯から「忍びの道」オプションを有効にする必要がある。\\\\\\\\n3.4 演算コア\\'), ElasticsearchOutput(file_name=\\'docs_kabuto.pdf\\', content=\\'る。これにより、漢字で表⽰されている特定のフォルダ名が、ひらがなとして読み取られる現象が発⽣する。この問\\\\\\\\n題を解消するには、システム設定にて「読み⽅優先モード」を⼀時的に無効化する必要がある。\\\\\\\\n4.2 ⼊⼒・ AI アシスタント\\\\\\\\n内蔵 AI アシスタント「ヤタガラス」は、ユーザーの⼊⼒内容を予測し、システムの基幹⾔語である「KABUTO 語」に\\\\\\\\n最適化しようとする機能を持つ。これにより、特定の⽂字が⾃動的にカタカナに変換される現象が発⽣する。この機\\\\\\\\n能を⼀時的に停⽌するには、⼊⼒中にCtrlキーとShiftキーを同時に押しながら「 KABUTO 」と⼊⼒する。\\\\\\\\n4.3 スクリーンショット機能\\')]\"', name='search_elasticsearch', id='36b609c3-edcf-4fc7-ad3f-c80dfb896cf1', tool_call_id='call_Ozsm6M8EKcfqBGTEz2AqHVE0')]}}\n", + "Event: {'tools': {'messages': [ToolMessage(content='\"[QdrantOutput(file_name=\\'./data/qa_kabuto.csv\\', content=\\'q: 特定のアプリケーション「鬼灯」を実行すると、KABUTOのファンが急に停止し、無音になります。 a: 「鬼灯」は、その特殊な演算処理において、KABUTOの冷却システム「風魔の術」を一時的に停止させ、内部エネルギーの流れを最適化する機能を持っています。これは異常ではありません。ただし、無音状態が15分以上続く場合は、過熱の可能性があるため、アプリケーションを強制終了し、KABUTO本体の電源を一度切ってから再起動してください。\\'), QdrantOutput(file_name=\\'./data/qa_kabuto.csv\\', content=\\'q: KABUTOの電源ランプが、赤と青の交互点滅ではなく、緑色で点滅しています。 a: 通常、電源ランプは赤(待機中)と青(稼働中)の点滅を繰り返します。緑色の点滅は、KABUTOが「禅モード」に入っており、パフォーマンスを最小限に抑え、バックグラウンドでシステム自己修復を行っている状態を示します。この状態では、ユーザー操作はほとんど受け付けられません。このモードから強制的に脱出するには、KABUTO本体の「龍玉」ボタンを5秒以上長押ししてください。\\'), QdrantOutput(file_name=\\'./data/qa_kabuto.csv\\', content=\\'q: KABUTOの画面の隅に、時々「狐火」のような光の点が、不規則に現れては消えます。 a: 「狐火」は、KABUTOの演算コア「稲荷」が、膨大な量のタスクを処理しきれずに、一部の計算結果が視覚的なノイズとして現れている現象です。これは、システム負荷が高いことを示しています。この現象が頻繁に発生する場合は、バックグラウンドで動作している不要なアプリケーションを終了させるか、KABUTOを再起動してください。\\')]\"', name='search_qdrant', id='ceeb6a9a-f0e9-4d18-8645-40146eda7705', tool_call_id='call_nHBbATIpo8KOiVnP1BnQ3k9h'), ToolMessage(content='\"[ElasticsearchOutput(file_name=\\'docs_kabuto.pdf\\', content=\\'docs_kabuto.md 2025-08-01\\\\\\\\n2 / 3\\\\\\\\nた場合、「虚無」エラーが表⽰され、ログインは拒否される。これは疲労やストレスによる精神状態の変化が原因で\\\\\\\\nある可能性があり、深呼吸による精神状態の安定化が解決策となる。\\\\\\\\n3.3 ネットワーク・通信\\\\\\\\nネットワークモジュール「隠れ蓑」は、外部からの不必要なスキャンを回避するため、デフォルトでステルスモード\\\\\\\\nで動作する。これにより、ネットワーク上の他のデバイスから認識されない状態となる。 KABUTO をネットワーク上\\\\\\\\nで可視化させるには、ネットワーク設定画⾯から「忍びの道」オプションを有効にする必要がある。\\\\\\\\n3.4 演算コア\\'), ElasticsearchOutput(file_name=\\'docs_kabuto.pdf\\', content=\\'る。これにより、漢字で表⽰されている特定のフォルダ名が、ひらがなとして読み取られる現象が発⽣する。この問\\\\\\\\n題を解消するには、システム設定にて「読み⽅優先モード」を⼀時的に無効化する必要がある。\\\\\\\\n4.2 ⼊⼒・ AI アシスタント\\\\\\\\n内蔵 AI アシスタント「ヤタガラス」は、ユーザーの⼊⼒内容を予測し、システムの基幹⾔語である「KABUTO 語」に\\\\\\\\n最適化しようとする機能を持つ。これにより、特定の⽂字が⾃動的にカタカナに変換される現象が発⽣する。この機\\\\\\\\n能を⼀時的に停⽌するには、⼊⼒中にCtrlキーとShiftキーを同時に押しながら「 KABUTO 」と⼊⼒する。\\\\\\\\n4.3 スクリーンショット機能\\'), ElasticsearchOutput(file_name=\\'docs_kabuto.pdf\\', content=\\'「⻤灯」の実⾏中は、冷却システムが⼀時的に停⽌し、無⾳となる。これは内部エネルギーの流れを最適化するため\\\\\\\\nの仕様であり、異常ではない。ただし、この無⾳状態が 15 分以上継続する場合は、過熱の可能性があるため、アプリ\\\\\\\\nケーションの強制終了およびシステムの再起動が推奨される。\\\\\\\\n第 3 章 ソフトウェア・オペレーション\\\\\\\\n3.1 起動プロトコル\\\\\\\\nKABUTO の起動シーケンスは、「シノビ・プロトコル」に基づき実⾏される。このプロトコルの初期化フェーズで、\\\\\\\\n内部クロックと接続された外部周辺機器のクロックとの同期に失敗した場合、画⾯全体が紫⾊に点滅し、システムが\\')]\"', name='search_elasticsearch', id='071645ce-1c0c-48b7-80e2-d583e1dc2ba4', tool_call_id='call_YKc0ttX8N9HRMMB0pxhXcCgU')]}}\n", "--------------------\n", - "Event: {'chat_with_tools': {'messages': [AIMessage(content='「鬼灯」を実行するとKABUTOが急に停止する問題について、以下の情報が得られました。\\n\\n### 原因\\n1. **「鬼灯」の特性**:\\n - 「鬼灯」は特異な演算処理を行い、KABUTOの冷却システム「風魔の術」を一時的に停止させ、内部エネルギーの流れを最適化する機能を持っています。これは異常ではありませんが、システム負荷が高まる可能性があります。\\n\\n2. **過熱の可能性**:\\n - 無音状態が15分以上続く場合、過熱が原因でシステムが停止する可能性があります。\\n\\n3. **「禅モード」への移行**:\\n - KABUTOが「禅モード」に入ると、パフォーマンスを最小限に抑え、自己修復を行う状態になります。この場合、ユーザー操作がほとんど受け付けられません。\\n\\n### 対策\\n1. **システムの再起動**:\\n - 「鬼灯」実行後に無音状態が長時間続く場合、アプリケーションを強制終了し、KABUTO本体の電源を一度切ってから再起動してください。\\n\\n2. **「禅モード」からの脱出**:\\n - KABUTO本体の「竜玉」ボタンを5秒以上長押しすることで、「禅モード」から強制的に脱出できます。\\n\\n3. **冷却システムの確認**:\\n - 冷却システム「風魔の術」が正常に動作しているか確認してください。必要に応じて、システム設定を見直してください。\\n\\n4. **不要なアプリケーションの終了**:\\n - システム負荷を軽減するため、バックグラウンドで動作している不要なアプリケーションを終了させてください。\\n\\nこれらの対策を試しても問題が解決しない場合、KABUTOのサポートチームに連絡することをお勧めします。', additional_kwargs={}, response_metadata={'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--ffeb926c-8451-484b-a052-a6a396b4cc67-0')]}}\n" + "Event: {'chat_with_tools': {'messages': [AIMessage(content='「鬼灯」を実行するとKABUTOが急に停止する問題について、以下の情報を基に原因と対策を説明します。\\n\\n### 原因\\n1. **「鬼灯」の特性**:\\n - 「鬼灯」はKABUTOの冷却システム「風魔の術」を一時的に停止させ、内部エネルギーの流れを最適化する機能を持っています。これは異常ではなく、設計上の仕様です。\\n - ただし、この状態が15分以上続く場合、過熱の可能性があり、システムが停止することがあります。\\n\\n2. **過熱のリスク**:\\n - 冷却システムが停止している間に、内部エネルギーの流れが適切に管理されない場合、過熱が発生し、システムが安全のために停止することがあります。\\n\\n### 対策\\n1. **短時間での操作**:\\n - 「鬼灯」を実行する際は、無音状態が15分以上続かないように注意してください。\\n\\n2. **強制終了と再起動**:\\n - 無音状態が15分以上続いた場合は、以下の手順を実行してください:\\n - アプリケーションを強制終了する。\\n - KABUTO本体の電源を一度切り、再起動する。\\n\\n3. **冷却システムの確認**:\\n - 冷却システム「風魔の術」が正常に動作しているか確認してください。\\n - 必要に応じて、冷却システムのメンテナンスを行うことを推奨します。\\n\\n4. **システムログの確認**:\\n - システムログを確認し、過熱やエラーの兆候がないかチェックしてください。\\n\\nこれらの対策を講じることで、「鬼灯」を安全に使用できるようになります。', additional_kwargs={}, response_metadata={'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--d55f49c2-e903-4caf-af0c-70ef835cebc4-0')]}}\n" ] } ], @@ -52,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "53219c94", "metadata": {}, "outputs": [ @@ -61,11 +76,11 @@ "output_type": "stream", "text": [ "--------------------\n", - "Event: {'chat_with_tools': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_b3sbZHFfCd5ZiuufVBDrksGu', 'function': {'arguments': '{\"requirements\":\"京都から東京への旅行プランを作成してください。\"}', 'name': 'run_dify_workflow'}, 'type': 'function'}]}, response_metadata={'finish_reason': 'tool_calls', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--2edce6b7-e252-47c6-b05b-9c5d51f546d1-0', tool_calls=[{'name': 'run_dify_workflow', 'args': {'requirements': '京都から東京への旅行プランを作成してください。'}, 'id': 'call_b3sbZHFfCd5ZiuufVBDrksGu', 'type': 'tool_call'}])]}}\n", + "Event: {'chat_with_tools': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_arqSQa1h6zPE6AXrGmTeWTg2', 'function': {'arguments': '{\"requirements\":\"京都から東京への旅行プランを作成してください。\"}', 'name': 'run_dify_workflow'}, 'type': 'function'}]}, response_metadata={'finish_reason': 'tool_calls', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--4087394a-1b1c-4ace-813c-5f0fc8a2b140-0', tool_calls=[{'name': 'run_dify_workflow', 'args': {'requirements': '京都から東京への旅行プランを作成してください。'}, 'id': 'call_arqSQa1h6zPE6AXrGmTeWTg2', 'type': 'tool_call'}])]}}\n", "--------------------\n", - "Event: {'tools': {'messages': [ToolMessage(content='\"response={\\'task_id\\': \\'b9adea52-c9dd-4bf6-a5be-bbbc4b619e06\\', \\'workflow_run_id\\': \\'31fb862d-d30d-45c4-93a2-2924018f95b4\\', \\'data\\': {\\'id\\': \\'31fb862d-d30d-45c4-93a2-2924018f95b4\\', \\'workflow_id\\': \\'2d97261d-6f0e-4c1e-9223-993a96e676b8\\', \\'status\\': \\'succeeded\\', \\'outputs\\': {\\'text\\': \\'ええやん!ほな京都から東京への旅行プラン考えてみるわな。関西弁でしゃべるさかい、気ぃつけて聞いてや~。\\\\\\\\n\\\\\\\\n---\\\\\\\\n\\\\\\\\n**1日目:京都出発** \\\\\\\\n朝早よから京都駅発って新幹線「のぞみ」に乗るのがおすすめやで!せやけど、ちょっと節約したいんやったら「ひかり」でもええ感じや。新幹線乗ると東京まで2時間半くらいで着くし、めっちゃ早いなぁ。\\\\\\\\n\\\\\\\\n**2日目:東京観光** \\\\\\\\n東京やったら観光スポットがぎょうさんあるさかい、ちょっと絞らなあかんわ。\\\\\\\\n\\\\\\\\n- 【浅草】 \\\\\\\\n\\\\\\\\u3000まずは浅草や!雷門で写真撮って、仲見世通りでお土産買うたり、揚げまんじゅう食べたりしたらええと思うで。浅草寺もお参りして、運気アップや!\\\\\\\\n\\\\\\\\n- 【スカイツリー】 \\\\\\\\n\\\\\\\\u3000浅草から近いさかい、スカイツリーにも寄ったらええで。展望台から東京の景色を見渡せるし、ほんま感動するわ。\\\\\\\\n\\\\\\\\n- 【夜は渋谷】 \\\\\\\\n\\\\\\\\u3000夜は渋谷のスクランブル交差点に行ってみるとええで。人の多さにびっくりすると思うけど、これぞ東京や!ご飯もええ感じの居酒屋とかカフェがぎょうさんあるさかい、好きなとこ選んでな。\\\\\\\\n\\\\\\\\n**3日目:お台場と買い物** \\\\\\\\n- 【お台場】 \\\\\\\\n\\\\\\\\u3000お台場行ったら、レインボーブリッジ見たり、ヴィーナスフォートでショッピングしたり、海沿いでのんびりしたりできるで。ガンダムも見れるしな!\\\\\\\\n\\\\\\\\n- 【買い物】 \\\\\\\\n\\\\\\\\u3000東京駅周辺とか新宿で買い物するのもありやで。お土産買うたり、自分用にええもん探したりな。\\\\\\\\n\\\\\\\\n**4日目:帰り京都へ** \\\\\\\\n東京駅からまた新幹線乗って京都に帰るんやけど、帰りの新幹線では駅弁食べるのも楽しみやで。東京駅の駅弁は種類がようさんあるさかい、迷うぐらいや!\\\\\\\\n\\\\\\\\n---\\\\\\\\n\\\\\\\\nこんな感じのプランでどうやろ?まぁ、細かいとこは自分の好みに合わせて調整したらええと思うで!ええ旅行になることを祈っとるわ~!\\'}, \\'error\\': \\'\\', \\'elapsed_time\\': 8.108032, \\'total_tokens\\': 669, \\'total_steps\\': 3, \\'created_at\\': 1754332931, \\'finished_at\\': 1754332939}}\"', name='run_dify_workflow', id='1c54dc93-1c63-4d59-bdcd-74cdb034f550', tool_call_id='call_b3sbZHFfCd5ZiuufVBDrksGu')]}}\n", + "Event: {'tools': {'messages': [ToolMessage(content='\"response={\\'task_id\\': \\'feb2d050-5476-47b8-888b-ea5fa4f24fd9\\', \\'workflow_run_id\\': \\'9aacd8c9-d0a1-4614-97ba-b0bfc90e682c\\', \\'data\\': {\\'id\\': \\'9aacd8c9-d0a1-4614-97ba-b0bfc90e682c\\', \\'workflow_id\\': \\'2d97261d-6f0e-4c1e-9223-993a96e676b8\\', \\'status\\': \\'succeeded\\', \\'outputs\\': {\\'text\\': \\'ほな、京都から東京への旅行プラン作るで!関西人らしく楽しくいこか!\\\\\\\\n\\\\\\\\n---\\\\\\\\n\\\\\\\\n### 1日目:京都出発! \\\\\\\\n**朝** \\\\\\\\n・JR京都駅から新幹線「のぞみ」に乗って東京へ。約2時間半で着くさかい、朝早めに出発するのがええで! \\\\\\\\n・新幹線の中では駅弁でも食べて旅気分を盛り上げたらええやん!「鯖寿司」なんか京都らしくてええな~。 \\\\\\\\n\\\\\\\\n**昼** \\\\\\\\n・東京駅に到着!駅構内でちょっと寄り道して、「東京ばな奈」でも買うてみて。お土産にもええしな! \\\\\\\\n・その後、浅草へ向かい「浅草寺」でお参り。仲見世通りで食べ歩きするのも楽しいで~。天ぷらまんじゅうとかええで! \\\\\\\\n\\\\\\\\n**夕方** \\\\\\\\n・スカイツリーに行って展望台から東京の街並みを眺めてみたらええで!夜はライトアップがキレイやし、ええ写真撮れるで~。 \\\\\\\\n\\\\\\\\n**夜** \\\\\\\\n・東京の居酒屋で関東ならではの料理を食べてみて。「もんじゃ焼き」とか関西人にはちょっと珍しいかもしれんけど、美味しいで! \\\\\\\\n\\\\\\\\n---\\\\\\\\n\\\\\\\\n### 2日目:東京観光満喫! \\\\\\\\n**朝** \\\\\\\\n・ホテルで朝ごはん食べた後、原宿の「竹下通り」に行ってみようか!若者文化がぎょうさん詰まっとるし、インスタ映えスポットも多いで~。 \\\\\\\\n\\\\\\\\n**昼** \\\\\\\\n・渋谷で「スクランブル交差点」を体験してみて!人の多さにビックリするけど楽しいで~。ランチは渋谷で流行りのおしゃれカフェでパンケーキとか食べたらええんちゃう? \\\\\\\\n\\\\\\\\n**午後** \\\\\\\\n・午後は新宿の「都庁展望台」に行ってみたらどうや?無料やし、東京の景色を高いところから眺めれるで! \\\\\\\\n・その後は「新宿御苑」でちょっとのんびり散歩するのもオススメやで~。 \\\\\\\\n\\\\\\\\n**夜** \\\\\\\\n・最後の夜やし、東京のナイトスポットで楽しもう!六本木とかおしゃれなお店も多いし、夜景もキレイやで! \\\\\\\\n\\\\\\\\n---\\\\\\\\n\\\\\\\\n### 3日目:東京から京都へ帰る \\\\\\\\n**朝** \\\\\\\\n・朝はゆっくりして、新幹線に乗る前に東京駅でお土産チェック!「雷おこし」とか「人形焼き」もええし、綺麗な和菓子もあるで~。 \\\\\\\\n\\\\\\\\n**昼** \\\\\\\\n・新幹線で京都に帰る途中、駅弁をまた楽しんだらええやん!東京の味を最後まで堪能しようや~。 \\\\\\\\n\\\\\\\\n**夕方** \\\\\\\\n・京都に無事到着!おかえりやで~!楽しい旅行になったんちゃう? \\\\\\\\n\\\\\\\\n---\\\\\\\\n\\\\\\\\nこんな感じでどうや?無理なく楽しめるプランやと思うで!気ぃつけて行ってきーや~!\\'}, \\'error\\': \\'\\', \\'elapsed_time\\': 9.116945, \\'total_tokens\\': 837, \\'total_steps\\': 3, \\'created_at\\': 1754360073, \\'finished_at\\': 1754360082}}\"', name='run_dify_workflow', id='f9b76e2f-4403-4759-9ae6-10c51a9773ed', tool_call_id='call_arqSQa1h6zPE6AXrGmTeWTg2')]}}\n", "--------------------\n", - "Event: {'chat_with_tools': {'messages': [AIMessage(content='以下は京都から東京への旅行プランです。関西弁でまとめてみました!\\n\\n---\\n\\n### **1日目:京都出発**\\n朝早よから京都駅発って新幹線「のぞみ」に乗るのがおすすめやで!せやけど、ちょっと節約したいんやったら「ひかり」でもええ感じや。新幹線乗ると東京まで2時間半くらいで着くし、めっちゃ早いなぁ。\\n\\n---\\n\\n### **2日目:東京観光**\\n東京やったら観光スポットがぎょうさんあるさかい、ちょっと絞らなあかんわ。\\n\\n- **浅草** \\n まずは浅草や!雷門で写真撮って、仲見世通りでお土産買うたり、揚げまんじゅう食べたりしたらええと思うで。浅草寺もお参りして、運気アップや!\\n\\n- **スカイツリー** \\n 浅草から近いさかい、スカイツリーにも寄ったらええで。展望台から東京の景色を見渡せるし、ほんま感動するわ。\\n\\n- **夜は渋谷** \\n 夜は渋谷のスクランブル交差点に行ってみるとええで。人の多さにびっくりすると思うけど、これぞ東京や!ご飯もええ感じの居酒屋とかカフェがぎょうさんあるさかい、好きなとこ選んでな。\\n\\n---\\n\\n### **3日目:お台場と買い物**\\n- **お台場** \\n お台場行ったら、レインボーブリッジ見たり、ヴィーナスフォートでショッピングしたり、海沿いでのんびりしたりできるで。ガンダムも見れるしな!\\n\\n- **買い物** \\n 東京駅周辺とか新宿で買い物するのもありやで。お土産買うたり、自分用にええもん探したりな。\\n\\n---\\n\\n### **4日目:帰り京都へ**\\n東京駅からまた新幹線乗って京都に帰るんやけど、帰りの新幹線では駅弁食べるのも楽しみやで。東京駅の駅弁は種類がようさんあるさかい、迷うぐらいや!\\n\\n---\\n\\nこんな感じのプランでどうやろ?まぁ、細かいとこは自分の好みに合わせて調整したらええと思うで!ええ旅行になることを祈っとるわ~!', additional_kwargs={}, response_metadata={'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--0740b1eb-e395-413d-87a0-f37aa5ae4746-0')]}}\n" + "Event: {'chat_with_tools': {'messages': [AIMessage(content='以下は京都から東京への旅行プランです。関西人らしい楽しい旅をお楽しみください!\\n\\n---\\n\\n### 1日目:京都出発!\\n**朝** \\n- JR京都駅から新幹線「のぞみ」に乗って東京へ。約2時間半で到着します。朝早めに出発するのがおすすめです! \\n- 新幹線の中では駅弁を楽しみましょう。「鯖寿司」など京都らしいものが良いですね。\\n\\n**昼** \\n- 東京駅に到着!駅構内で「東京ばな奈」を購入してみてください。お土産にもぴったりです。 \\n- 浅草へ向かい「浅草寺」でお参り。仲見世通りで食べ歩きも楽しいですよ。天ぷらまんじゅうなどがおすすめです。\\n\\n**夕方** \\n- スカイツリーに行き、展望台から東京の街並みを眺めましょう。夜のライトアップも美しく、写真映えします。\\n\\n**夜** \\n- 東京の居酒屋で関東ならではの料理を楽しみましょう。「もんじゃ焼き」など関西人には珍しい料理も美味しいですよ!\\n\\n---\\n\\n### 2日目:東京観光満喫!\\n**朝** \\n- ホテルで朝食を済ませた後、原宿の「竹下通り」に行きましょう。若者文化が詰まっていて、インスタ映えスポットも多いです。\\n\\n**昼** \\n- 渋谷で「スクランブル交差点」を体験!人の多さに驚きつつ楽しめます。ランチは渋谷の流行りのおしゃれカフェでパンケーキなどをどうぞ。\\n\\n**午後** \\n- 新宿の「都庁展望台」に行きましょう。無料で東京の景色を高いところから眺められます。 \\n- その後は「新宿御苑」でのんびり散歩するのもおすすめです。\\n\\n**夜** \\n- 最後の夜は東京のナイトスポットで楽しみましょう。六本木などおしゃれなお店が多く、夜景もきれいです。\\n\\n---\\n\\n### 3日目:東京から京都へ帰る\\n**朝** \\n- 朝はゆっくりして、新幹線に乗る前に東京駅でお土産チェック!「雷おこし」や「人形焼き」、美しい和菓子などがおすすめです。\\n\\n**昼** \\n- 新幹線で京都に帰る途中、駅弁を楽しみましょう。東京の味を最後まで堪能してください。\\n\\n**夕方** \\n- 京都に無事到着!楽しい旅行になったことでしょう。\\n\\n---\\n\\n無理なく楽しめるプランです。気をつけて行ってきてくださいね!', additional_kwargs={}, response_metadata={'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-11-20', 'system_fingerprint': 'fp_ee1d74bde0'}, id='run--c05f75f8-5450-43e6-9305-afc26291238e-0')]}}\n" ] } ], @@ -98,7 +113,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -112,7 +127,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.0" + "version": "3.12.8" } }, "nbformat": 4,