{"id":20616,"date":"2026-01-12T07:00:00","date_gmt":"2026-01-11T22:00:00","guid":{"rendered":"https:\/\/blog.capilano-fw.com\/?p=20616"},"modified":"2026-01-08T18:14:33","modified_gmt":"2026-01-08T09:14:33","slug":"%e3%80%8cdify%e9%a7%86%e5%8b%95%e9%96%8b%e7%99%ba%e3%80%8d%e3%82%84%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9f%ef%bc%81","status":"publish","type":"post","link":"https:\/\/blog.capilano-fw.com\/?p=20616","title":{"rendered":"\u300cdify\u99c6\u52d5\u958b\u767a\u300d\u3067\u6642\u77ed\u958b\u767a\u3084\u3063\u3066\u307f\u305f\uff01"},"content":{"rendered":"\n<p>\u3055\u3066\u3055\u3066\u3001\u6700\u8fd1\u306f\u30ed\u30fc\u30ab\u30ebLLM\uff08\u30aa\u30d5\u30e9\u30a4\u30f3\u3067\u5b9f\u884c\u3067\u304d\u308b\u751f\u6210AI\uff09\u304c\u9762\u767d\u304f\u3066\u3044\u308d\u3044\u308d\u3084\u3063\u3066\u3044\u308b\u3093\u3067\u3059\u304c\u3001\u3053\u306e\u9593\u3064\u304b\u3063\u305f<code>dify<\/code>\u3067\u4f55\u304b\u3067\u304d\u306a\u3044\u304b\u8003\u3048\u3066\u3044\u305f\u3068\u3053\u308d\u30011\u3064\u601d\u3044\u3064\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"has-small-font-size\">\u203bdify\u3068\u306f\u3001\u30ce\u30fc\u30b3\u30fc\u30c9\uff0f\u30ed\u30fc\u30b3\u30fc\u30c9\u3067\u751f\u6210AI\u30a2\u30d7\u30ea\u3084\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u69cb\u7bc9\u3067\u304d\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u308c\u304c\u30fb\u30fb\u30fb\u30fb\u30fb<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>dify\u99c6\u52d5\u958b\u767a<\/strong><\/p>\n\n\n\n<p>\u3067\u3059\uff01<\/p>\n\n\n\n<p>\u3076\u3063\u3061\u3083\u3051\u3001\u3053\u306e\u8a00\u8449\u306f\u79c1\u306e\u9020\u8a9e\u306a\u3093\u3067\u4e00\u822c\u7684\u3067\u306f\u306a\u3044\u3067\u3059\u304c\u3001\u3064\u307e\u308a\u306f\u3001<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>dify\u306b\u3067\u304d\u308b\u3053\u3068\u306f\u3084\u3089\u305b\u3066\u3001\u6642\u77ed\u3067\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u958b\u767a\u3057\u3088\u3046<\/strong>\uff01<\/p>\n\n\n\n<p>\u3068\u3044\u3046\u3082\u306e\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001<code>dify<\/code>\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u4f7f\u3063\u3066\u51e6\u7406\u306e\u6d41\u308c\u3092\u30ce\u30fc\u30b3\u30fc\u30c9\u3067\u5b9f\u88c5\u3067\u304d\u308b\u308f\u3051\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"71\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-13.png\" alt=\"\" class=\"wp-image-20669\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-13.png 640w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-13-300x33.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>\u3058\u3083\u3042\u3001\u3053\u306e\u3067\u304d\u308b\u90e8\u5206\u306f<code>dify<\/code>\u306b\u3084\u3089\u305b\u3066\u3001\u305d\u308c\u4ee5\u5916\u306f<code>Laravel<\/code>\u3068\u304b\u306e\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u3067\u5b9f\u88c5\u3059\u308b\u3068\u3044\u3046\u4f5c\u6226\u3067\u3059\u306d\u3002<\/p>\n\n\n\n<p>\u305d\u3053\u3067\uff01<\/p>\n\n\n\n<p>\u4eca\u56de\u306f<code>dify<\/code>\u99c6\u52d5\u958b\u767a\u3067\u300c<strong>\u898b\u7a4d\u66f8PDF\u304b\u3089\u30c7\u30fc\u30bf\u62bd\u51fa\u3059\u308b<\/strong>\u300d\u6a5f\u80fd\u3092\u4f5c\u3063\u3066\u307f\u307e\u3059\u3002<br>\u306a\u304a\u3001\u62bd\u51fa\u3059\u308b\u30c7\u30fc\u30bf\u306f\u4ee5\u4e0b4\u3064\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f1a\u793e\u540d<\/li>\n\n\n\n<li>\u767a\u751f\u65e5<\/li>\n\n\n\n<li>\u5408\u8a08\u91d1\u984d<\/li>\n\n\n\n<li>\u30bf\u30a4\u30d7<\/li>\n<\/ul>\n\n\n\n<p>\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u4eca\u56de\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u4eba\u306b\u5411\u3051\u3066\u8a18\u4e8b\u3092\u66f8\u3044\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u300cdify\u306b\u3067\u304d\u308b\u3053\u3068\u306f\u3084\u3089\u305b\u3066\u3001\u6642\u77ed\u3067\u958b\u767a\u3057\u305f\u3044\u300d<\/li>\n\n\n\n<li>\u300c\u3081\u3093\u3069\u3046\u306a\u51e6\u7406\u306fdify\u306b\u4efb\u305b\u305f\u3044\u300d<\/li>\n\n\n\n<li>\u300c\u958b\u767a\u5de5\u6570\u3092\u6e1b\u3089\u3057\u306a\u304c\u3089\u3001\u6a5f\u80fd\u3092\u5897\u3084\u3057\u305f\u3044\u300d<\/li>\n\n\n\n<li>\u300cAI\u3092\u4f7f\u3063\u3066\u3001\u958b\u767a\u3092\u52b9\u7387\u5316\u3057\u305f\u3044\u300d<\/li>\n\n\n\n<li>\u300c\u30ce\u30fc\u30b3\u30fc\u30c9\u30c4\u30fc\u30eb\u3067\u3001\u958b\u767a\u306e\u4e00\u90e8\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u305f\u3044\u300d<\/li>\n\n\n\n<li>\u300c\u306a\u308b\u3079\u304f\u958b\u767a\u3057\u306a\u3044\u3067\u3001\u30d7\u30ed\u30c0\u30af\u30c8\u4f5c\u308a\u305f\u3044\u300d<\/li>\n\n\n\n<li>\u300c\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u91cf\u3092\u6700\u5c0f\u5316\u3057\u305f\u3044\u300d<\/li>\n\n\n\n<li>\u300c\u793e\u5916\u79d8\u306e\u30c7\u30fc\u30bf\u3092\u30ed\u30fc\u30ab\u30eb\u5b8c\u7d50\u3067\u51e6\u7406\u3057\u305f\u3044\u300d<\/li>\n\n\n\n<li>\u300cdify\u3067\u4f55\u304c\u3067\u304d\u308b\u304b\u3001\u5b9f\u4f8b\u3067\u77e5\u308a\u305f\u3044\u300d<\/li>\n\n\n\n<li>\u300c\u958b\u767a\u52b9\u7387\u3068\u30b3\u30b9\u30c8\u524a\u6e1b\u3092\u4e21\u7acb\u3055\u305b\u305f\u3044\u300d<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"364\" height=\"320\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2019\/08\/no_3.png\" alt=\"\" class=\"wp-image-4328\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2019\/08\/no_3.png 364w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2019\/08\/no_3-300x264.png 300w\" sizes=\"auto, (max-width: 364px) 100vw, 364px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center\">\u300c\u30de\u30ea\u30ab\u30fc\u3001\u512a\u52dd\u76f4\u524d\u3067<br>\u96fb\u6e90\u304c\u843d\u3061\u305f\u3093\u3067\u3059\u304c\u20262\u56de\u3082\ud83d\ude29\u300d<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u524d\u63d0\u3068\u3057\u3066<\/h2>\n\n\n\n<p><code>dify<\/code>\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u306e\u304c\u5927\u524d\u63d0\u3067\u3059\u3002<br>\u3082\u3057\u307e\u3060\u306e\u65b9\u306f\u3001\u4ee5\u4e0b\u30da\u30fc\u30b8\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p class=\"has-small-font-size\"><a href=\"https:\/\/blog.capilano-fw.com\/?p=14054\" data-type=\"post\" data-id=\"14054\">\u3010dify\u3011\u691c\u7d22\u4e0a\u4f4d10\u8a18\u4e8b\u3092\u3064\u304b\u3063\u3066\u3001SEO\u3092\u8003\u616e\u3057\u305f\u8a18\u4e8b\u30bf\u30a4\u30c8\u30eb\u3092\u3064\u304f\u308b\u65b9\u6cd5<\/a><\/p>\n\n\n\n<p class=\"has-small-font-size\">\u203b\u3061\u306a\u307f\u306b\u9014\u4e2d\u304b\u3089dify\u3092\u6700\u65b0\u7248\u306b\u3057\u305f\u306e\u3067\u3001\u3069\u3053\u304b\u304a\u304b\u3057\u306a\u3068\u3053\u308d\u304c\u3067\u308b\u304b\u3082\u3067\u3059\u2026\u3059\u307f\u307e\u305b\u3093\u3002\u304a\u554f\u3044\u5408\u308f\u305b\u304b\u3089\u8cea\u554f\u3057\u3066\u304f\u3060\u3055\u3044\ud83d\ude47<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ollama\u3092docker-compose\u5185\u3067\u6709\u52b9\u306b\u3059\u308b<\/h2>\n\n\n\n<p>\u4eca\u56de\u306f\u30ed\u30fc\u30ab\u30ebLLM\u304c\u5fc5\u8981\u3067\u3059\u306e\u3067\u3001<code>Ollama<\/code>\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ollama\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/h3>\n\n\n\n<p><code>Ollama<\/code>\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u3001<code>docker-compose.yaml<\/code>\u304b\u3089\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305f\u3060\u3001\u4eca\u56de\u306f\u4e0a\u66f8\u304d\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u306e\u3067\u3001\u305d\u306e\u5143\u306b\u306a\u308b<code>docker-compose-template.yaml<\/code>\u306e\u65b9\u3092\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>docker\/docker-compose-template.yaml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>services:<br><br>  # \u3053\u3053\u306b\u3044\u308d\u3093\u306a\u30b5\u30fc\u30d3\u30b9<br><br>  ollama:<br>    image: ollama\/ollama:latest<br>    container_name: ollama<br>    ports:<br>      - \"11434:11434\"<br>    volumes:<br>      - ollama-data:\/root\/.ollama<br>    environment:<br>      - OLLAMA_HOST=0.0.0.0:11434<br>    restart: unless-stopped<br><br>volumes:<br><br>  # \u3053\u3053\u306b\u3044\u308d\u3093\u306avolume<br><br>  ollama-data:<br>    driver: local<\/strong><\/pre>\n\n\n\n<p>\u8ffd\u52a0\u3057\u305f\u3089\u3001<code>docker-compose.yaml<\/code>\u3092\u518d\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>.\/generate_docker_compose<\/strong><\/pre>\n\n\n\n<p>\u3053\u308c\u3067<code>docker-compose.yaml<\/code>\u306b<code>Ollama<\/code>\u304c\u5165\u3063\u3066\u3044\u305f\u3089\u3001\u5b8c\u4e86\u3067\u3059\uff01<\/p>\n\n\n\n<p>\u3067\u306f\u3001\u4e00\u5ea6<code>docker<\/code>\u74b0\u5883\u3092\u518d\u8d77\u52d5\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>docker compose up -d<\/strong><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u30e2\u30c7\u30eb\u300cgemma3n:e4b\u300d\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/h3>\n\n\n\n<p>\u3067\u306f\u3001<code>VRAM 4GB<\/code>\u3067\u4f7f\u3048\u308b\u8efd\u91cf&amp;\u8ce2\u3044<code>Google<\/code>\u88fd\u30e2\u30c7\u30eb\u300c<strong>gemma3n:e4b<\/strong>\u300d\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>docker exec -it ollama ollama pull gemma3n:e4b<\/strong><\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u3001<code>Ollama<\/code>\u306b<code>gemma3n:e4b<\/code>\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dify\u3067Ollama\u304c\u6709\u52b9\u306b\u306a\u308b\u3088\u3046\u306b\u3059\u308b<\/h2>\n\n\n\n<p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u76f4\u5f8c\u3060\u3068<code>dify<\/code>\u306f<code>Ollama<\/code>\u3092\u4f7f\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002<br>\u307e\u305a\u306f<code>Ollama<\/code>\u3092\u6709\u52b9\u306b\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>\u753b\u9762\u53f3\u4e0a\u304b\u3089\u8a2d\u5b9a\u306b\u79fb\u52d5\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"274\" height=\"233\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-16.png\" alt=\"\" class=\"wp-image-21373\"\/><\/figure>\n\n\n\n<p>\u30e2\u30c7\u30eb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u9078\u629e<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"231\" height=\"360\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-17.png\" alt=\"\" class=\"wp-image-21374\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-17.png 231w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-17-193x300.png 193w\" sizes=\"auto, (max-width: 231px) 100vw, 231px\" \/><\/figure>\n\n\n\n<p><code>Ollama<\/code>\u3092\u63a2\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"525\" height=\"365\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-15.png\" alt=\"\" class=\"wp-image-21376\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-15.png 525w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-15-300x209.png 300w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/figure>\n\n\n\n<p>\u3053\u308c\u3067OK!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dify\u3067\u898b\u7a4d\u66f8\u306e\u8aad\u307f\u53d6\u3092\u3059\u308b\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u3064\u304f\u308b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u3064\u304f\u308b<\/h3>\n\n\n\n<p>\u3067\u306f\u3001\u4ee5\u4e0b\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u3064\u304f\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u958b\u59cb\uff1a\u3053\u3053\u3067PDF\u3092\u9078\u629e&amp;\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/li>\n\n\n\n<li>\u30c6\u30ad\u30b9\u30c8\u62bd\u51fa\u30c4\u30fc\u30eb\uff1aPDF\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa<\/li>\n\n\n\n<li>LLM\uff1aOllama\uff08\u751f\u6210AI\uff09\u3067\u60c5\u5831\u3092\u6574\u7406<\/li>\n\n\n\n<li>\u7d42\u4e86\uff1a\u51fa\u529b\uff08\u3064\u307e\u308a\u3001\u3053\u306e\u30c6\u30ad\u30b9\u30c8\u304cLaravel\u306b\u6e21\u308b\uff09<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"71\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-13.png\" alt=\"\" class=\"wp-image-20669\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-13.png 640w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-13-300x33.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>\u3061\u306a\u307f\u306b\u4eca\u56de\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u7528\u306e<code>yaml<\/code>\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u306e\u3067\u3001\u5229\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p><strong>\u8acb\u6c42\u66f8\u3084\u898b\u7a4d\u66f8\u306e\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u3068\u308b.yaml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>app:<br>  description: ''<br>  icon: \ud83e\udd16<br>  icon_background: '#FFEAD5'<br>  mode: workflow<br>  name: \u8acb\u6c42\u66f8\u3084\u898b\u7a4d\u66f8\u306e\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u3068\u308b<br>  use_icon_as_answer_icon: false<br>kind: app<br>version: 0.1.5<br>workflow:<br>  conversation_variables: []<br>  environment_variables: []<br>  features:<br>    file_upload:<br>      allowed_file_extensions:<br>      - .JPG<br>      - .JPEG<br>      - .PNG<br>      - .GIF<br>      - .WEBP<br>      - .SVG<br>      allowed_file_types:<br>      - image<br>      allowed_file_upload_methods:<br>      - local_file<br>      - remote_url<br>      enabled: false<br>      fileUploadConfig:<br>        audio_file_size_limit: 50<br>        batch_count_limit: 5<br>        file_size_limit: 15<br>        image_file_size_limit: 10<br>        video_file_size_limit: 100<br>        workflow_file_upload_limit: 10<br>      image:<br>        enabled: false<br>        number_limits: 3<br>        transfer_methods:<br>        - local_file<br>        - remote_url<br>      number_limits: 3<br>    opening_statement: ''<br>    retriever_resource:<br>      enabled: true<br>    sensitive_word_avoidance:<br>      enabled: false<br>    speech_to_text:<br>      enabled: false<br>    suggested_questions: []<br>    suggested_questions_after_answer:<br>      enabled: false<br>    text_to_speech:<br>      enabled: false<br>      language: ''<br>      voice: ''<br>  graph:<br>    edges:<br>    - data:<br>        isInIteration: false<br>        sourceType: llm<br>        targetType: end<br>      id: 1766951498079-source-1766951545392-target<br>      source: '1766951498079'<br>      sourceHandle: source<br>      target: '1766951545392'<br>      targetHandle: target<br>      type: custom<br>      zIndex: 0<br>    - data:<br>        isInIteration: false<br>        sourceType: start<br>        targetType: document-extractor<br>      id: 1766951493868-source-1767094515119-target<br>      source: '1766951493868'<br>      sourceHandle: source<br>      target: '1767094515119'<br>      targetHandle: target<br>      type: custom<br>      zIndex: 0<br>    - data:<br>        isInIteration: false<br>        sourceType: document-extractor<br>        targetType: llm<br>      id: 1767094515119-source-1766951498079-target<br>      source: '1767094515119'<br>      sourceHandle: source<br>      target: '1766951498079'<br>      targetHandle: target<br>      type: custom<br>      zIndex: 0<br>    nodes:<br>    - data:<br>        desc: ''<br>        selected: false<br>        title: \u958b\u59cb<br>        type: start<br>        variables:<br>        - allowed_file_extensions: []<br>          allowed_file_types:<br>          - document<br>          allowed_file_upload_methods:<br>          - local_file<br>          label: pdf\u30d5\u30a1\u30a4\u30eb<br>          max_length: 48<br>          options: []<br>          required: true<br>          type: file<br>          variable: pdf<br>      height: 90<br>      id: '1766951493868'<br>      position:<br>        x: 15.953837400933764<br>        y: 273.24610547328945<br>      positionAbsolute:<br>        x: 15.953837400933764<br>        y: 273.24610547328945<br>      selected: false<br>      sourcePosition: right<br>      targetPosition: left<br>      type: custom<br>      width: 244<br>    - data:<br>        context:<br>          enabled: false<br>          variable_selector: []<br>        desc: ''<br>        model:<br>          completion_params:<br>            temperature: 0.7<br>          mode: chat<br>          name: gemma3n:e4b<br>          provider: ollama<br>        prompt_template:<br>        - id: e1337f7e-8fce-477b-8fcd-0abc4feb41ea<br>          role: system<br>          text: \"PDF\u304b\u3089\u62bd\u51fa\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u4ee5\u4e0b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u51fa\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n{\\n    \\\"company_name\\\": \\\"\uff08\u4f1a\u793e\u540d\uff09\\\"\\<br>            ,\\n    \\\"date\\\": \\\"\uff08\u767a\u751f\u65e5:YYYY\/MM\/DD\uff09\\\",\\n    \\\"total_amount\\\": \\\"\uff08\u5408\u8a08\u91d1\u984d\uff09\\\"\\<br>            ,\\n    \\\"type\\\": \\\"\u5e33\u7968\u30bf\u30a4\u30d7\uff08estimate \/ invoice\uff09\\\",\\n}\\n\\n\u3010PDF\u304b\u3089\u62bd\u51fa\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3011\\n\\<br>            {{#1767094515119.text#}}\"<br>        selected: false<br>        title: LLM<br>        type: llm<br>        variables: []<br>        vision:<br>          enabled: false<br>      height: 98<br>      id: '1766951498079'<br>      position:<br>        x: 580.8985755742976<br>        y: 273.24610547328945<br>      positionAbsolute:<br>        x: 580.8985755742976<br>        y: 273.24610547328945<br>      selected: false<br>      sourcePosition: right<br>      targetPosition: left<br>      type: custom<br>      width: 244<br>    - data:<br>        desc: ''<br>        outputs:<br>        - value_selector:<br>          - '1766951498079'<br>          - text<br>          variable: text<br>        selected: true<br>        title: \u7d42\u4e86<br>        type: end<br>      height: 90<br>      id: '1766951545392'<br>      position:<br>        x: 858.6368919941658<br>        y: 273.24610547328945<br>      positionAbsolute:<br>        x: 858.6368919941658<br>        y: 273.24610547328945<br>      selected: true<br>      sourcePosition: right<br>      targetPosition: left<br>      type: custom<br>      width: 244<br>    - data:<br>        desc: ''<br>        is_array_file: false<br>        selected: false<br>        title: \u30c6\u30ad\u30b9\u30c8\u62bd\u51fa\u30c4\u30fc\u30eb<br>        type: document-extractor<br>        variable_selector:<br>        - '1766951493868'<br>        - pdf<br>      height: 92<br>      id: '1767094515119'<br>      position:<br>        x: 301.32432946995584<br>        y: 273.24610547328945<br>      positionAbsolute:<br>        x: 301.32432946995584<br>        y: 273.24610547328945<br>      selected: false<br>      sourcePosition: right<br>      targetPosition: left<br>      type: custom<br>      width: 244<br>    viewport:<br>      x: 141.30600128551987<br>      y: 149.45067361343058<br>      zoom: 0.8705505632961227<\/strong><\/pre>\n\n\n\n<p>\u3061\u306a\u307f\u306b\u3001\u30a4\u30f3\u30dd\u30fc\u30c8\u306f\u30da\u30fc\u30b8\u5de6\u4e0a\u306e\u30dc\u30bf\u30f3\u306e\u4e2d\u306b\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"351\" height=\"413\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-12.png\" alt=\"\" class=\"wp-image-20667\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-12.png 351w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-12-255x300.png 255w\" sizes=\"auto, (max-width: 351px) 100vw, 351px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">API\u30ad\u30fc\u3092\u53d6\u5f97\u3059\u308b<\/h3>\n\n\n\n<p>\u307e\u305a\u30da\u30fc\u30b8\u5de6\u5074\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u300c<strong>API\u30a2\u30af\u30bb\u30b9<\/strong>\u300d\u3078\u79fb\u52d5\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"211\" height=\"276\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-9.png\" alt=\"\" class=\"wp-image-20649\"\/><\/figure>\n\n\n\n<p>\u30da\u30fc\u30b8\u53f3\u4e0a\u90e8\u5206\u306b\u3042\u308b\u300c<strong>API\u30ad\u30fc<\/strong>\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"153\" height=\"122\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-1.png\" alt=\"\" class=\"wp-image-20653\"\/><\/figure>\n\n\n\n<p>\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u300c<strong>+ \u65b0\u3057\u3044\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\u3092\u4f5c\u6210<\/strong>\u300d\u3092\u30af\u30ea\u30c3\u30af\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"132\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-2.png\" alt=\"\" class=\"wp-image-20655\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-2.png 640w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-2-300x62.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>\u3059\u308b\u3068\u3001<code>API<\/code>\u30ad\u30fc\u304c\u4f5c\u6210\u3055\u308c\u308b\u306e\u3067\u3001<code>Laravel<\/code>\u306b\u767b\u9332\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"509\" height=\"237\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-3.png\" alt=\"\" class=\"wp-image-20712\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-3.png 509w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-3-300x140.png 300w\" sizes=\"auto, (max-width: 509px) 100vw, 509px\" \/><\/figure>\n\n\n\n<p><strong>.env<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>DIFY_API_KEY=app-*******************<\/strong><\/pre>\n\n\n\n<p>\u305d\u3057\u3066\u3001<code>API<\/code>\u30ad\u30fc\u3092\u30b3\u30f3\u30d5\u30a3\u30b0\u304b\u3089\u53d6\u5f97\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>config\/dify.php<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>&lt;?php<br><br>return [<br>    'api-key' =&gt; env('DIFY_API_KEY', ''),<br>];<\/strong><\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u3001<code>config('dify.api-key')<\/code>\u3067API\u30ad\u30fc\u3092\u53d6\u5f97\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Laravel\u3067dify API\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b<\/h2>\n\n\n\n<p>\u3067\u306f\u3001\u5404<code>Laravel<\/code>\u30d1\u30fc\u30c4\u3092\u7d39\u4ecb\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>routes\/web.php<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>use App\\Http\\Controllers\\DifyController;<br><\/strong><br>\/\/ \u7701\u7565<br><strong><br>Route::prefix('dify')-&gt;group(function () {<br>    Route::get('\/create', [DifyController::class, 'create'])-&gt;name('dify.create');<br>    Route::post('\/', [DifyController::class, 'store'])-&gt;name('dify.store');<br>});<\/strong><\/pre>\n\n\n\n<p><strong>app\/Http\/Controllers\/DifyController.php<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>&lt;?php<br><br>namespace App\\Http\\Controllers;<br><br>use Illuminate\\Http\\RedirectResponse;<br>use Illuminate\\Http\\Request;<br>use Inertia\\Response;<br>use Illuminate\\Support\\Facades\\Http;<br><br>class DifyController extends Controller<br>{<br>    public function create(Request $request): Response<br>    {<br>        return inertia('Dify\/Create', [<br>            'flash' =&gt; $request-&gt;session()-&gt;get('flash'),<br>        ]);<br>    }<br><br>    public function store(Request $request): RedirectResponse<br>    {<br>        \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306f\u7701\u7565\u3057\u3066\u3044\u307e\u3059<br><br>        $difyUser = 'root';<br>        $file = $request-&gt;file('file');<br>        $path = $file-&gt;store('dify');<br>        $fullPath = storage_path('app\/private\/' . $path);<br>        $authToken = config('dify.api-key');<br><br>        \/\/ dify\u3078\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b<br>        $uploadUrl = 'http:\/\/localhost\/v1\/files\/upload';<br>        $file_response = Http::withHeaders([<br>            'Authorization' =&gt; 'Bearer '. $authToken,<br>        ])-&gt;attach(<br>            'file',<br>            file_get_contents($fullPath),<br>            $file-&gt;getClientOriginalName(),<br>            ['Content-Type' =&gt; $file-&gt;getClientMimeType()]<br>        )-&gt;post($uploadUrl, [<br>            'user' =&gt; $difyUser,<br>        ]);<br><br>        if (! $file_response-&gt;successful()) {<br>            return redirect()-&gt;route('dify.create')-&gt;with('flash', 'Dify\u3078\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f');<br>        }<br><br>        $file_json = $file_response-&gt;json();<br>        $UploadFileId = data_get($file_json, 'id');<br><br>        \/\/ dify\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u5b9f\u884c\u3059\u308b<br>        $workflowUrl = 'http:\/\/localhost\/v1\/workflows\/run';<br>        $payload = [<br>            'inputs' =&gt; [<br>                'pdf' =&gt; [<br>                    'transfer_method' =&gt; 'local_file',<br>                    'upload_file_id' =&gt; $UploadFileId,<br>                    'type' =&gt; 'document',<br>                ],<br>            ],<br>            'response_mode' =&gt; 'blocking',<br>            'user' =&gt; $difyUser,<br>        ];<br>        $workflow_response = Http::withHeaders([<br>            'Authorization' =&gt; 'Bearer '. $authToken,<br>            'Content-Type' =&gt; 'application\/json',<br>        ])-&gt;post($workflowUrl, $payload);<br><br>        if (! $workflow_response-&gt;successful()) {<br>            return redirect()-&gt;route('dify.create')-&gt;with('flash', '\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u5b9f\u884c\u306b\u5931\u6557\u3057\u307e\u3057\u305f');<br>        }<br><br>        $workflow_json = $workflow_response-&gt;json('data.outputs.text');<br>        $workflow_json = $this-&gt;stripCodeFences($workflow_json);<br><br>        logger($workflow_json); \/\/ \u672c\u6765\u306f\u3053\u3053\u3067\u4f55\u304b\u51e6\u7406\u3092\u3059\u308b<br><br>        return redirect()-&gt;route('dify.create')-&gt;with('flash', '\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u5b9f\u884c\u306b\u6210\u529f\u3057\u307e\u3057\u305f');<br>    }<br><br>    private function stripCodeFences($text)<br>    {<br>        $text = preg_replace('\/```(?:[a-zA-Z0-9_\\-]+\\n)?([\\s\\S]*?)```\/', '$1', $text);<br>        $text = str_replace('```', '', $text);<br><br>        return trim($text);<br>    }<br>}<\/strong><\/pre>\n\n\n\n<p><strong>resources\/js\/Pages\/Dify\/Create.vue<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>&lt;script setup lang=\"ts\"&gt;<br>import { Head, useForm } from '@inertiajs\/vue3';<br>import { ref } from 'vue';<br><br>const props = defineProps&lt;{ flash?: string | null }&gt;();<br><br>type UploadForm = {<br>    file: File | null;<br>};<br>const form = useForm&lt;UploadForm&gt;({<br>    file: null,<br>});<br>const fileInput = ref&lt;HTMLInputElement | null&gt;(null);<br>const loading = ref(false);<br>const onFileChange = (e?: Event) =&gt; {<br>    const files = (e?.target as HTMLInputElement)?.files;<br>    if (!files || files.length === 0) return;<br>    form.file = files[0];<br>};<br>const submit = () =&gt; {<br>    if (!form.file) return;<br>    loading.value = true;<br>    form.post(route('dify.store'), {<br>        preserveState: true,<br>        onFinish: () =&gt; {<br>            loading.value = false;<br>            form.reset('file');<br>            if (fileInput.value) fileInput.value.value = '';<br>        },<br>    });<br>};<br>&lt;\/script&gt;<br><br>&lt;template&gt;<br>    &lt;Head title=\"Dify Upload\" \/&gt;<br>    &lt;div class=\"mx-auto mt-8 max-w-xl\"&gt;<br>        &lt;h1 class=\"mb-4 text-2xl font-semibold\"&gt;PDF\u3092Dify\u3078\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9&lt;\/h1&gt;<br><br>        &lt;div v-if=\"props.flash\" class=\"mb-4 text-green-600\"&gt;<br>            {{ props.flash }}<br>        &lt;\/div&gt;<br><br>        &lt;div class=\"rounded bg-white p-6 shadow\"&gt;<br>            &lt;input<br>                ref=\"fileInput\"<br>                type=\"file\"<br>                accept=\"application\/pdf\"<br>                @change=\"onFileChange\"<br>                class=\"mb-4 block w-full\"<br>            \/&gt;<br>            &lt;div class=\"flex items-center space-x-2\"&gt;<br>                &lt;button<br>                    class=\"rounded bg-indigo-600 px-4 py-2 text-white\"<br>                    :disabled=\"loading\"<br>                    @click.prevent=\"submit\"<br>                &gt;<br>                    &lt;span v-if=\"!loading\"&gt;\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9&lt;\/span&gt;<br>                    &lt;span v-else class=\"flex items-center gap-2\"&gt;<br>                        &lt;svg<br>                            class=\"h-4 w-4 animate-spin text-white\"<br>                            xmlns=\"http:\/\/www.w3.org\/2000\/svg\"<br>                            fill=\"none\"<br>                            viewBox=\"0 0 24 24\"<br>                        &gt;<br>                            &lt;circle<br>                                class=\"opacity-25\"<br>                                cx=\"12\"<br>                                cy=\"12\"<br>                                r=\"10\"<br>                                stroke=\"currentColor\"<br>                                stroke-width=\"4\"<br>                            &gt;&lt;\/circle&gt;<br>                            &lt;path<br>                                class=\"opacity-75\"<br>                                fill=\"currentColor\"<br>                                d=\"M4 12a8 8 0 018-8v8z\"<br>                            &gt;&lt;\/path&gt;<br>                        &lt;\/svg&gt;<br>                        \u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u4e2d...<br>                    &lt;\/span&gt;<br>                &lt;\/button&gt;<br>            &lt;\/div&gt;<br>        &lt;\/div&gt;<br>    &lt;\/div&gt;<br>&lt;\/template&gt;<\/strong><\/pre>\n\n\n\n<p>\u306f\u3044\uff01<br>\u3053\u308c\u3067\u6e96\u5099\u306f\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c6\u30b9\u30c8\u3057\u3066\u307f\u308b<\/h2>\n\n\n\n<p>\u3067\u306f\u3001\u5b9f\u969b\u306b\u300c<strong>Laravel\u2192dify API<\/strong>\u300d\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff01<\/p>\n\n\n\n<p><code>dify<\/code>\u3068<code>Laravel<\/code>\u3092\u8d77\u52d5\u3057\u3066\u3001<code>Laravel<\/code>\u4e0a\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8acb\u6c42\u66f8<code>PDF<\/code>\u3092\u9078\u629e\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"905\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-8.png\" alt=\"\" class=\"wp-image-20681\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-8.png 640w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-8-212x300.png 212w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>\u9078\u629e\u3057\u305f\u3068\u3053\u308d\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"619\" height=\"212\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-5.png\" alt=\"\" class=\"wp-image-20684\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-5.png 619w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-5-300x103.png 300w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/figure>\n\n\n\n<p>\u3067\u306f\u3001\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"617\" height=\"210\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-6.png\" alt=\"\" class=\"wp-image-20685\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-6.png 617w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-6-300x102.png 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/figure>\n\n\n\n<p>\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u4e2d\u306e\u8868\u793a\u304c\u3067\u3066\u3001\u6570\u79d2\u7d4c\u3064\u3068\u30fb\u30fb\u30fb\u30fb\u30fb\u30fb<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized image-border-3\"><img loading=\"lazy\" decoding=\"async\" width=\"621\" height=\"251\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-7.png\" alt=\"\" class=\"wp-image-20687\" style=\"width:621px;height:auto\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-7.png 621w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2026\/01\/dify-driven-development-7-300x121.png 300w\" sizes=\"auto, (max-width: 621px) 100vw, 621px\" \/><\/figure>\n\n\n\n<p>\u306f\u3044\uff01<br>\u6210\u529f\u3057\u305f\u3053\u3068\u304c\u8868\u793a\u3055\u308c\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u3067\u306f\u3001<code>Laravel<\/code>\u5185\u306b\u51fa\u529b\u3055\u308c\u305f\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>\u3046\u307e\u304f\u3044\u304f\u3067\u3057\u3087\u3046\u304b\u30fb\u30fb\u30fb\u30fb\u30fb\u30fb<\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>[2026-01-01 20:02:58] local.DEBUG: {<br>  \"company_name\": \"\u682a\u5f0f\u4f1a\u793e\u30c6\u30b9\u30c8\",<br>  \"date\": \"2025\u5e7412\u670818\u65e5\",<br>  \"total_amount\": \"67,897\",<br>  \"type\": \"estimate\"<br>}  <\/strong><\/pre>\n\n\n\n<p>\u306f\u3044\uff01<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f1a\u793e\u540d<\/li>\n\n\n\n<li>\u767a\u751f\u65e5<\/li>\n\n\n\n<li>\u5408\u8a08\u91d1\u984d<\/li>\n\n\n\n<li>\u30bf\u30a4\u30d7<\/li>\n<\/ul>\n\n\n\n<p>\u306e4\u3064\u304c\u6b63\u78ba\u306b\u53d6\u5f97\u3067\u304d\u3066\u3044\u307e\u3059\u3002<br>\u6210\u529f\u3067\u3059\ud83d\ude0a\u2728<\/p>\n\n\n\n<p class=\"has-small-font-size\">\u203b\u3082\u3061\u308d\u3093\u3001\u9014\u4e2d\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u5909\u66f4\u3059\u308b\u3068\u53d6\u5f97\u3057\u305f\u3044\u30c7\u30fc\u30bf\u3082\u5909\u66f4\u3067\u304d\u307e\u3059\u3088\uff01<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f01\u696d\u69d8\u3078\u306e\u3054\u63d0\u6848<\/h2>\n\n\n\n<p><code>dify<\/code>\u306f\u975e\u30a8\u30f3\u30b8\u30cb\u30a2\u3067\u3082\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u3064\u304f\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u3053\u3067\u3001<code>dify<\/code>\u3092\u81ea\u793e\u3067\u958b\u767a\u3057\u3001\u5fc5\u8981\u306a\u90e8\u5206\u3092\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u4efb\u305b\u308b\u3053\u3068\u3067\u3001\u5de5\u6570\u3092\u5927\u5e45\u306b\u6e1b\u3089\u305b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"has-small-font-size\">\u203b\u3082\u3061\u308d\u3093\u5b9f\u88c5\u3057\u305f\u3044\u5185\u5bb9\u306b\u3088\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u3053\u3067\u3001\u4e00\u5ea6<code>dify<\/code>\u3092\u4f7f\u3063\u3066\u307f\u3066\u300c\u3053\u308c\u3092\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089\u5b9f\u884c\u3057\u305f\u3044\u300d\u3068\u3044\u3063\u305f\u3054\u5e0c\u671b\u304c\u3042\u308b\u3088\u3046\u3067\u3057\u305f\u3089\u3001\u304a\u529b\u306b\u306a\u308c\u308b\u304b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305c\u3072\u304a\u554f\u3044\u5408\u308f\u305b\u304b\u3089\u3054\u76f8\u8ac7\u304f\u3060\u3055\u3044\u3002<br>\u304a\u5f85\u3061\u3057\u3066\u304a\u308a\u307e\u3059\ud83d\ude0a<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u304a\u308f\u308a\u306b<\/h2>\n\n\n\n<p>\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u4eca\u56de\u306f\u300c<strong>dify\u99c6\u52d5\u958b\u767a<\/strong>\u300d\u3092\u3084\u3063\u3066\u307f\u307e\u3057\u305f\uff01<\/p>\n\n\n\n<p>\u611f\u60f3\u3068\u3057\u3066\u306f\u3001<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d1\u30bf\u30fc\u30f3\u306b\u3088\u3063\u3066\u306f\u3001\u901a\u5e38\u3088\u308a\u5de5\u6570\u3092\u6e1b\u3089\u305b\u308b<\/li>\n\n\n\n<li>\u30ed\u30fc\u30ab\u30ebLLM\u3068\u306e\u89aa\u548c\u6027\u304c\u9ad8\u3044<\/li>\n\n\n\n<li>dify API\u306f\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3068\u306e\u9023\u643a\u304c\u7c21\u5358<\/li>\n<\/ul>\n\n\n\n<p>\u3063\u3066\u611f\u3058\u3067\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u305f\u3060\u3057\u3001\u30c7\u30e1\u30ea\u30c3\u30c8\u3068\u3057\u3066\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u611f\u3058\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dify\u3067\u8868\u793a\u3055\u308c\u308b\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u81ea\u4f53\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306f\u96e3\u3057\u3044<\/li>\n\n\n\n<li>dify + Laravel + phpstorm\u3092\u4f7f\u3063\u3066\u3044\u308b\u3068\u30d1\u30bd\u30b3\u30f3\u304c\u30d5\u30ea\u30fc\u30ba\u3059\u308b\u3050\u3089\u3044\u8ca0\u8377\u304c\u5927\u304d\u3044<\/li>\n<\/ul>\n\n\n\n<p>\u305d\u306e\u305f\u3081\u3001\u3084\u308a\u305f\u3044\u3053\u3068\u306b\u3088\u3063\u3066<code>dify<\/code>\u3092\u4f7f\u3046\u304b\u3069\u3046\u304b\u3092\u304d\u3061\u3093\u3068\u5224\u5225\u3059\u3079\u304d\u3060\u3044\u3046\u8003\u3048\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u3061\u306a\u307f\u306b\u3001\u6642\u77ed\u306b\u3064\u306a\u304c\u308a\u305d\u3046\u306a\u6a5f\u80fd\u3082\u3054\u7d39\u4ecb\u3057\u307e\u3057\u3087\u3046\u3002<br>\u305d\u308c\u306f\u3001\u4eca\u56de\u3082\u3064\u304b\u3063\u305f\u300c<strong><code>PDF<\/code>\u3084<code>Word<\/code>\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\u3059\u308b\u6a5f\u80fd<\/strong>\u300d\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u901a\u5e38\u3060\u3068\u3001<code>Laravel<\/code>\u5185\u3067<code>PDFTOTEXT<\/code>\u3084<code>OCR<\/code>\u3092\u5b9f\u88c5\u3057\u306a\u3044\u3068\u3044\u3051\u307e\u305b\u3093\u304c\u3001<code>dify<\/code>\u306b\u306f\u6a19\u6e96\u642d\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u306e\u3067\u3001<code>API<\/code>\u30a2\u30af\u30bb\u30b9\u3060\u3051\u3067OK\u3068\u3044\u3046\u308f\u3051\u3067\u3059\u306d\u3002<\/p>\n\n\n\n<p>\u3068\u306b\u3082\u304b\u304f\u306b\u3082\u3001\u9762\u767d\u3044\u3093\u3067\u3001\u305c\u3072\u7686\u3055\u3093\u3082<code>dify<\/code>\u3067\u4f55\u304b\u4f5c\u3063\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>\u3067\u306f\u3067\u306f\u301c\uff01<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"224\" height=\"320\" src=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2021\/07\/no_30.png\" alt=\"\" class=\"wp-image-9439\" srcset=\"https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2021\/07\/no_30.png 224w, https:\/\/blog.capilano-fw.com\/wp-content\/uploads\/2021\/07\/no_30-210x300.png 210w\" sizes=\"auto, (max-width: 224px) 100vw, 224px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center\">\u300cGoogle\u306e\u8efd\u91cf\u30ed\u30fc\u30ab\u30ebLLM\u3001<br>\u304b\u3057\u3053\u304b\u3063\u305f\uff01\uff01\u300d<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3055\u3066\u3055\u3066\u3001\u6700\u8fd1\u306f\u30ed\u30fc\u30ab\u30ebLLM\uff08\u30aa\u30d5\u30e9\u30a4\u30f3\u3067\u5b9f\u884c\u3067\u304d\u308b\u751f\u6210AI\uff09\u304c\u9762\u767d\u304f\u3066\u3044\u308d\u3044\u308d\u3084\u3063\u3066\u3044\u308b\u3093\u3067\u3059\u304c\u3001\u3053\u306e\u9593\u3064\u304b\u3063\u305fdify\u3067\u4f55\u304b\u3067\u304d\u306a\u3044\u304b\u8003\u3048\u3066\u3044\u305f\u3068\u3053\u308d\u30011 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.capilano-fw.com\/?p=20616\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;\u300cdify\u99c6\u52d5\u958b\u767a\u300d\u3067\u6642\u77ed\u958b\u767a\u3084\u3063\u3066\u307f\u305f\uff01&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":20790,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,265],"tags":[270,266],"class_list":["post-20616","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","category-ai","tag-dify","tag-ollama"],"_links":{"self":[{"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=\/wp\/v2\/posts\/20616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=20616"}],"version-history":[{"count":177,"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=\/wp\/v2\/posts\/20616\/revisions"}],"predecessor-version":[{"id":21384,"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=\/wp\/v2\/posts\/20616\/revisions\/21384"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=\/wp\/v2\/media\/20790"}],"wp:attachment":[{"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capilano-fw.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}