{"id":44022,"date":"2026-05-13T22:19:53","date_gmt":"2026-05-13T13:19:53","guid":{"rendered":"https:\/\/vitalify.jp\/blog\/?p=44022"},"modified":"2026-05-13T22:21:23","modified_gmt":"2026-05-13T13:21:23","slug":"dify-log-howto","status":"publish","type":"post","link":"https:\/\/vitalify.jp\/blog\/2026\/05\/dify-log-howto.html","title":{"rendered":"Dify\u306e\u4f1a\u8a71\u30ed\u30b0\u3092CSV\u51fa\u529b\u30fb\u5206\u6790\u3059\u308b\u65b9\u6cd5"},"content":{"rendered":"<p><!-- ===== \u5192\u982d ===== --><\/p>\n<p>\u3053\u3093\u306b\u3061\u306f\u3002\u6a2a\u7530\u3067\u3059\u3002<\/p>\n<p>Dify\u3067\u4f5c\u3063\u305f\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\u3092\u793e\u5185\u3084\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u69d8\u306b\u5c55\u958b\u3057\u3066\u3044\u308b\u3068\u3001\u7d50\u69cb\u3088\u304f\u805e\u304b\u308c\u308b\u306e\u304c\u300c<strong>\u4f1a\u8a71\u30ed\u30b0\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u305f\u3044<\/strong>\u300d\u300c<strong>\u904e\u53bb\u306e\u4f1a\u8a71\u3092\u5206\u6790\u3057\u305f\u3044<\/strong>\u300d\u3068\u3044\u3046\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u3059\u3002<\/p>\n<p><!--more--><\/p>\n<p>Dify\u306e\u7ba1\u7406\u753b\u9762\u306e\u300c\u30ed\u30b0\u300d\u30bf\u30d6\u304b\u3089\u4f1a\u8a71\u5358\u4f4d\u3067\u306e\u5c65\u6b74\u306f\u898b\u3089\u308c\u308b\u306e\u3067\u3059\u304c\u3001<strong>\u6b8b\u5ff5\u306a\u304c\u3089\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fCSV\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u6a5f\u80fd\u304c\u3064\u3044\u3066\u3044\u307e\u305b\u3093<\/strong>\u3002<br \/>\n1\u4ef6\u305a\u3064\u76ee\u8996\u3067\u78ba\u8a8d\u3059\u308b\u3060\u3051\u306a\u3089\u3044\u3044\u306e\u3067\u3059\u304c\u3001\u4ef6\u6570\u304c\u5897\u3048\u3066\u304d\u305f\u308a\u3001\u5b9a\u671f\u7684\u306b\u5206\u6790\u3057\u305f\u3044\u3068\u306a\u308b\u3068\u3001\u4f55\u304b\u3057\u3089\u306e\u65b9\u6cd5\u3067\u30ed\u30b0\u3092\u5f15\u3063\u5f35\u308a\u51fa\u3057\u3066\u304f\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001<strong>\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u7248Dify<\/strong>\u3092\u524d\u63d0\u306b\u3001\u5b9f\u6848\u4ef6\u3067\u5b9f\u969b\u306b\u8a66\u3057\u305f <strong>4\u3064\u306e\u30a2\u30d7\u30ed\u30fc\u30c1<\/strong>\uff08\u516c\u5f0fAPI \/ PostgreSQL\u76f4\u30af\u30a8\u30ea \/ Langsmith\u30fbLangfuse \/ Python\u30b9\u30af\u30ea\u30d7\u30c8\uff09\u3092\u6bd4\u8f03\u3057\u3001\u7528\u9014\u5225\u306b\u304a\u3059\u3059\u3081\u306e\u65b9\u6cd5\u3092\u6574\u7406\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n<div style=\"background: #fefce8;border: 1px solid #fde047;border-radius: 8px;padding: 1em 1.4em;margin: 1.5em 0\">\n<p style=\"margin: 0\"><strong>\ud83d\udccc \u5bfe\u8c61\u74b0\u5883\uff1a<\/strong>\u672c\u8a18\u4e8b\u306f<strong>\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u7248Dify<\/strong>\uff08Docker Compose\u3067\u69cb\u7bc9\u3059\u308bOSS\u7248\uff09\u3092\u524d\u63d0\u306b\u3057\u3066\u3044\u307e\u3059\u3002Dify Cloud \u3067\u306f DB \u3078\u306e\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u304c\u3067\u304d\u306a\u3044\u306a\u3069\u4e00\u90e8\u306e\u65b9\u6cd5\u306f\u4f7f\u3048\u307e\u305b\u3093\u306e\u3067\u3001\u3054\u6ce8\u610f\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/div>\n<p><!-- ===== \u76ee\u6b21 ===== --><\/p>\n<nav class=\"wp-block-group\" style=\"background: #f8fafc;border-left: 4px solid #3b82f6;padding: 1.2em 1.5em;border-radius: 0 8px 8px 0;margin: 2em 0\">\n<p style=\"font-weight: bold;margin: 0 0 0.6em 0;font-size: 1em\">\ud83d\udccb \u3053\u306e\u8a18\u4e8b\u306e\u76ee\u6b21<\/p>\n<ol style=\"margin: 0;padding-left: 1.4em;line-height: 2\">\n<li><a href=\"#admin\">\u307e\u305a\u78ba\u8a8d\uff1a\u7ba1\u7406\u753b\u9762\u306e\u30ed\u30b0\u6a5f\u80fd\u306e\u9650\u754c<\/a><\/li>\n<li><a href=\"#compare\">4\u3064\u306e\u53d6\u5f97\u65b9\u6cd5 \u6bd4\u8f03\u8868<\/a><\/li>\n<li><a href=\"#api\">\u65b9\u6cd5\u2460 \u516c\u5f0fAPI\uff08\u4e00\u756a\u304a\u3059\u3059\u3081\uff09<\/a><\/li>\n<li><a href=\"#sql\">\u65b9\u6cd5\u2461 PostgreSQL \u3092\u76f4\u63a5SQL\u3067\u53e9\u304f<\/a><\/li>\n<li><a href=\"#langsmith\">\u65b9\u6cd5\u2462 Langsmith \/ Langfuse \u306a\u3069\u306e\u89b3\u6e2c\u30c4\u30fc\u30eb<\/a><\/li>\n<li><a href=\"#python\">\u65b9\u6cd5\u2463 Python\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u5b9a\u671f\u30a8\u30af\u30b9\u30dd\u30fc\u30c8<\/a><\/li>\n<li><a href=\"#which\">\u7d50\u5c40\u3069\u308c\u3092\u9078\u3079\u3070\u3044\u3044\uff1f<\/a><\/li>\n<li><a href=\"#summary\">\u307e\u3068\u3081<\/a><\/li>\n<\/ol>\n<\/nav>\n<p><!-- ===== 1. \u7ba1\u7406\u753b\u9762\u306e\u9650\u754c ===== --><\/p>\n<h2 id=\"admin\">\u7ba1\u7406\u753b\u9762\u306e\u30ed\u30b0\u6a5f\u80fd\u306e\u9650\u754c<\/h2>\n<p>Dify\u306e\u7ba1\u7406\u753b\u9762\u306b\u306f\u300c\u30ed\u30b0\u300d\u30bf\u30d6\u304c\u3042\u308a\u3001\u5404\u30a2\u30d7\u30ea\u306e\u4f1a\u8a71\u5c65\u6b74\u3092\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u30021\u4ef6\u305a\u3064\u4f1a\u8a71\u306e\u6d41\u308c\u3092\u8ffd\u3046\u306b\u306f\u4fbf\u5229\u306a\u6a5f\u80fd\u3067\u3059\u304c\u3001\u904b\u7528\u3057\u3066\u3044\u308b\u3068\u6b21\u306e\u3088\u3046\u306a\u4e0d\u6e80\u304c\u51fa\u3066\u304d\u307e\u3059\u3002<\/p>\n<ul>\n<li>CSV \/ Excel \u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u304c\u306a\u3044\uff08\u500b\u5225\u30b3\u30d4\u30da\u306f\u73fe\u5b9f\u7684\u3067\u306f\u306a\u3044\uff09<\/li>\n<li>\u4ef6\u6570\u304c\u5897\u3048\u308b\u3068UI\u304c\u91cd\u304f\u306a\u308b<\/li>\n<li>\u4f1a\u8a71\u6a2a\u65ad\u3067\u306e\u5168\u6587\u691c\u7d22\u304c\u5f31\u3044\uff08\u7279\u5b9a\u30ad\u30fc\u30ef\u30fc\u30c9\u306e\u51fa\u73fe\u983b\u5ea6\u306e\u96c6\u8a08\u306a\u3069\uff09<\/li>\n<li>\u5b9a\u671f\u7684\u306b\u5206\u6790\u3059\u308b\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306b\u7d44\u307f\u8fbc\u3081\u306a\u3044<\/li>\n<\/ul>\n<p>\u3064\u307e\u308a\u300c\u3061\u3087\u3063\u3068\u898b\u308b\u3060\u3051\u300d\u306a\u3089OK\u3001\u300c\u5206\u6790\u30fb\u7d99\u7d9a\u904b\u7528\u300d\u306b\u306a\u308b\u3068\u5225\u306e\u624b\u6bb5\u304c\u5fc5\u8981\u3001\u3068\u3044\u3046\u306e\u304c\u5b9f\u60c5\u3067\u3059\u3002<\/p>\n<p><!-- ===== 2. \u6bd4\u8f03\u8868 ===== --><\/p>\n<h2 id=\"compare\">4\u3064\u306e\u53d6\u5f97\u65b9\u6cd5 \u6bd4\u8f03\u8868<\/h2>\n<p>\u5148\u306b\u7d50\u8ad6\u3092\u8868\u3067\u307e\u3068\u3081\u307e\u3059\u3002\u8a73\u7d30\u306f\u6b21\u7bc0\u4ee5\u964d\u3067\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n<div style=\"margin: 1.5em 0\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 0.92em\">\n<thead>\n<tr style=\"background: #1e40af;color: #fff\">\n<th style=\"padding: 0.7em 1em;text-align: left\">\u65b9\u6cd5<\/th>\n<th style=\"padding: 0.7em 1em;text-align: left\">\u96e3\u6613\u5ea6<\/th>\n<th style=\"padding: 0.7em 1em;text-align: left\">\u5411\u3044\u3066\u3044\u308b\u7528\u9014<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\"><strong>\u2460 \u516c\u5f0fAPI<\/strong><\/td>\n<td style=\"padding: 0.7em 1em\">\u2605\u2605\u2606<\/td>\n<td style=\"padding: 0.7em 1em\">\u5358\u767a\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u30fb\u904b\u7528\u30c4\u30fc\u30eb\u7d44\u307f\u8fbc\u307f<\/td>\n<\/tr>\n<tr style=\"background: #f8fafc;border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\"><strong>\u2461 PostgreSQL\u76f4\u30af\u30a8\u30ea<\/strong><\/td>\n<td style=\"padding: 0.7em 1em\">\u2605\u2605\u2605<\/td>\n<td style=\"padding: 0.7em 1em\">\u5927\u91cf\u30c7\u30fc\u30bf\u306e\u4e00\u62ec\u53d6\u5f97\u30fb\u96c6\u8a08\u5206\u6790<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\"><strong>\u2462 Langsmith \/ Langfuse<\/strong><\/td>\n<td style=\"padding: 0.7em 1em\">\u2605\u2606\u2606<\/td>\n<td style=\"padding: 0.7em 1em\">\u7d99\u7d9a\u76e3\u8996\u30fb\u30c7\u30d0\u30c3\u30b0\u30fb\u30c8\u30fc\u30af\u30f3\u5206\u6790<\/td>\n<\/tr>\n<tr style=\"background: #f8fafc;border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\"><strong>\u2463 Python\u30b9\u30af\u30ea\u30d7\u30c8<\/strong><\/td>\n<td style=\"padding: 0.7em 1em\">\u2605\u2605\u2606<\/td>\n<td style=\"padding: 0.7em 1em\">\u5b9a\u671f\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u30fbCSV\u5316\u81ea\u52d5\u5316<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div style=\"background: #eff6ff;border: 1px solid #bfdbfe;border-radius: 8px;padding: 1em 1.4em;margin: 1.5em 0\">\n<p style=\"margin: 0\"><strong>\ud83d\udca1 \u3056\u3063\u304f\u308a\u7d50\u8ad6\uff1a<\/strong>\u624b\u65e9\u304f\u53d6\u308a\u51fa\u3059\u306a\u3089\u300c\u2460 API\u300d\u3001<br \/>\n\u5927\u91cf\u30c7\u30fc\u30bf\u3092\u96c6\u8a08\u5206\u6790\u3059\u308b\u306a\u3089\u300c\u2461 PostgreSQL\u76f4\u30af\u30a8\u30ea\u300d\u3001<br \/>\n\u904b\u7528\u3057\u306a\u304c\u3089\u30c7\u30d0\u30c3\u30b0\u3084\u89b3\u6e2c\u3082\u3057\u305f\u3044\u306a\u3089\u300c\u2462 Langsmith \/ Langfuse\u300d\u3001<br \/>\n\u5b9a\u671f\u5b9f\u884c\u3067\u81ea\u52d5\u5316\u3057\u305f\u3044\u306a\u3089\u300c\u2463 Python\u300d\u304c\u305d\u308c\u305e\u308c\u6700\u77ed\u30eb\u30fc\u30c8\u3067\u3059\u3002<\/p>\n<\/div>\n<p><!-- ===== 3. API ===== --><\/p>\n<h2 id=\"api\">\u65b9\u6cd5\u2460 \u516c\u5f0fAPI\uff08\u4e00\u756a\u304a\u3059\u3059\u3081\uff09<\/h2>\n<p>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3082\u3057\u3063\u304b\u308a\u3057\u3066\u3044\u3066\u3001\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u74b0\u5883\u306eDify\u306b\u305d\u306e\u307e\u307e\u4f7f\u3048\u308b\u306e\u3067\u3001\u307e\u305a\u306f\u3053\u3053\u304b\u3089\u691c\u8a0e\u3059\u308b\u306e\u304c\u7121\u96e3\u3067\u3059\u3002<\/p>\n<h3>API\u30ad\u30fc\u306e\u53d6\u5f97<\/h3>\n<p>Dify\u30a2\u30d7\u30ea\u306e\u7ba1\u7406\u753b\u9762 \u2192 \u5de6\u30e1\u30cb\u30e5\u30fc\u300c\u30a2\u30d7\u30ea\u306e API \u30a2\u30af\u30bb\u30b9\u300d\u3092\u958b\u304f\u3068\u3001API Base URL \u3068\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\uff08API\u30ad\u30fc\uff09\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3092\u4f7f\u3063\u3066\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u6295\u3052\u307e\u3059\u3002<\/p>\n<h3>\u4f1a\u8a71\u4e00\u89a7\u3092\u53d6\u5f97<\/h3>\n<pre style=\"background: #0f172a;color: #e2e8f0;padding: 1.2em 1.5em;border-radius: 8px;font-size: 0.88em;line-height: 1.7\"><code>GET \/v1\/conversations?user={USER_ID}&amp;limit=100\r\n\r\nAuthorization: Bearer {API_KEY}<\/code><\/pre>\n<p><code>user<\/code> \u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u306f\u3001Chat\u30a2\u30d7\u30ea\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u3084\u308a\u3068\u308a\u3059\u308b\u3068\u304d\u306bDify\u306b\u6e21\u3057\u305f\u30a8\u30f3\u30c9\u30e6\u30fc\u30b6\u30fcID\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<code>limit<\/code> \u306f\u6700\u5927100\u3001\u305d\u308c\u4ee5\u4e0a\u306f <code>last_id<\/code> \u3067\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u3057\u3066\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n<h3>\u5404\u4f1a\u8a71\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d6\u5f97<\/h3>\n<pre style=\"background: #0f172a;color: #e2e8f0;padding: 1.2em 1.5em;border-radius: 8px;font-size: 0.88em;line-height: 1.7\"><code>GET \/v1\/messages?conversation_id={CONV_ID}&amp;user={USER_ID}&amp;limit=100\r\n\r\nAuthorization: Bearer {API_KEY}<\/code><\/pre>\n<p>\u30ec\u30b9\u30dd\u30f3\u30b9\u306b\u306f <code>query<\/code>\uff08\u30e6\u30fc\u30b6\u30fc\u767a\u8a00\uff09\u3001<code>answer<\/code>\uff08AI\u56de\u7b54\uff09\u3001<code>created_at<\/code>\u3001<code>metadata<\/code>\uff08\u30c8\u30fc\u30af\u30f3\u6d88\u8cbb\u30fb\u9045\u5ef6\u306a\u3069\uff09\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/p>\n<div style=\"background: #fefce8;border: 1px solid #fde047;border-radius: 8px;padding: 1em 1.4em;margin: 1.5em 0\">\n<p style=\"margin: 0\"><strong>\u26a0\ufe0f \u6ce8\u610f\uff1a<\/strong>API \u306f <strong>user \u5358\u4f4d<\/strong>\u3067\u4f1a\u8a71\u3092\u53d6\u5f97\u3059\u308b\u4ed5\u7d44\u307f\u3067\u3059\u3002\u300c\u5168\u30e6\u30fc\u30b6\u30fc\u306e\u5168\u4f1a\u8a71\u3092\u4e00\u62ec\u53d6\u5f97\u3059\u308b\u300d\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306f\u73fe\u72b6\u3042\u308a\u307e\u305b\u3093\u3002\u5168\u4ef6\u307e\u3068\u3081\u3066\u6b32\u3057\u3044\u3068\u304d\u306f\u3001\u6b21\u306b\u7d39\u4ecb\u3059\u308b SQL \u76f4\u30af\u30a8\u30ea\u3092\u4f7f\u3046\u304b\u3001Python \u3067 user \u30ea\u30b9\u30c8\u3092\u9806\u306b\u30eb\u30fc\u30d7\u53d6\u5f97\u3059\u308b\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n<p><!-- ===== 4. PostgreSQL ===== --><\/p>\n<h2 id=\"sql\">\u65b9\u6cd5\u2461 PostgreSQL \u3092\u76f4\u63a5SQL\u3067\u53e9\u304f<\/h2>\n<p>\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u74b0\u5883\u306a\u3089\u3067\u306f\u306e\u65b9\u6cd5\u3067\u3001<strong>SQL\u3067\u5168\u4ef6\u30fb\u6a2a\u65ad\u7684\u306b\u53d6\u5f97\u3067\u304d\u308b<\/strong>\u306e\u304c\u5727\u5012\u7684\u306a\u30e1\u30ea\u30c3\u30c8\u3067\u3059\u3002\u30c7\u30fc\u30bf\u5206\u6790\u3084\u7d71\u8a08\u3092\u53d6\u308a\u305f\u3044\u306a\u3089\u3001\u3053\u308c\u304c\u4e00\u756a\u7d20\u76f4\u3067\u901f\u3044\u3067\u3059\u3002<\/p>\n<h3>DB\u306b\u63a5\u7d9a\u3059\u308b<\/h3>\n<p>Docker Compose \u3067\u7acb\u3066\u3066\u3044\u308b\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067PostgreSQL\u30b3\u30f3\u30c6\u30ca\u306b\u5165\u308c\u307e\u3059\u3002<\/p>\n<pre style=\"background: #0f172a;color: #e2e8f0;padding: 1.2em 1.5em;border-radius: 8px;font-size: 0.88em;line-height: 1.7\"><code>docker exec -it docker-db-1 psql -U postgres -d dify<\/code><\/pre>\n<p>\u30b3\u30f3\u30c6\u30ca\u540d\u306f\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u3088\u3063\u3066 <code>dify-db-1<\/code> \u7b49\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001<code>docker ps<\/code> \u3067\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>\u4e3b\u8981\u306a\u30c6\u30fc\u30d6\u30eb<\/h3>\n<p>\u4f1a\u8a71\u30ed\u30b0\u53d6\u5f97\u3067\u4f7f\u3046\u306e\u306f\u4e3b\u306b\u6b21\u306e2\u30c6\u30fc\u30d6\u30eb\u3067\u3059\u3002<\/p>\n<div style=\"margin: 1.5em 0\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 0.92em\">\n<thead>\n<tr style=\"background: #1e40af;color: #fff\">\n<th style=\"padding: 0.7em 1em;text-align: left\">\u30c6\u30fc\u30d6\u30eb<\/th>\n<th style=\"padding: 0.7em 1em;text-align: left\">\u4e3b\u306a\u30ab\u30e9\u30e0<\/th>\n<th style=\"padding: 0.7em 1em;text-align: left\">\u5185\u5bb9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\"><code>conversations<\/code><\/td>\n<td style=\"padding: 0.7em 1em\"><code>id<\/code> \/ <code>app_id<\/code> \/ <code>from_end_user_id<\/code> \/ <code>name<\/code> \/ <code>created_at<\/code><\/td>\n<td style=\"padding: 0.7em 1em\">\u4f1a\u8a71\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u5358\u4f4d<\/td>\n<\/tr>\n<tr style=\"background: #f8fafc;border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\"><code>messages<\/code><\/td>\n<td style=\"padding: 0.7em 1em\"><code>id<\/code> \/ <code>conversation_id<\/code> \/ <code>query<\/code> \/ <code>answer<\/code> \/ <code>message_tokens<\/code> \/ <code>answer_tokens<\/code> \/ <code>total_price<\/code> \/ <code>created_at<\/code><\/td>\n<td style=\"padding: 0.7em 1em\">1\u5f80\u5fa9\u3054\u3068\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u672c\u4f53<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>\u30b5\u30f3\u30d7\u30eb\u30af\u30a8\u30ea\uff1a\u7279\u5b9a\u30a2\u30d7\u30ea\u306e\u5168\u4f1a\u8a71\u3092CSV\u5316<\/h3>\n<pre style=\"background: #0f172a;color: #e2e8f0;padding: 1.2em 1.5em;border-radius: 8px;font-size: 0.88em;line-height: 1.7\"><code>\\copy (\r\n  SELECT\r\n    c.id            AS conversation_id,\r\n    c.name          AS conversation_name,\r\n    c.from_end_user_id,\r\n    m.created_at,\r\n    m.query         AS user_message,\r\n    m.answer        AS ai_answer,\r\n    m.message_tokens,\r\n    m.answer_tokens,\r\n    m.total_price\r\n  FROM messages m\r\n  JOIN conversations c ON c.id = m.conversation_id\r\n  WHERE c.app_id = 'YOUR_APP_UUID'\r\n  ORDER BY c.created_at, m.created_at\r\n) TO '\/tmp\/dify_logs.csv' WITH CSV HEADER;<\/code><\/pre>\n<p><code>\\copy<\/code> \u3092\u4f7f\u3046\u3068\u3001psql \u5185\u304b\u3089\u76f4\u63a5CSV\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u304d\u51fa\u305b\u307e\u3059\u3002Docker\u30b3\u30f3\u30c6\u30ca\u5185\u306e <code>\/tmp\/<\/code> \u306b\u51fa\u529b\u3055\u308c\u308b\u306e\u3067\u3001<code>docker cp<\/code> \u3067\u30db\u30b9\u30c8\u5074\u306b\u53d6\u308a\u51fa\u3059\u304b\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u30de\u30a6\u30f3\u30c8\u3057\u3066\u3044\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u51fa\u529b\u3059\u308b\u306e\u304c\u30e9\u30af\u3067\u3059\u3002<\/p>\n<div style=\"background: #fefce8;border: 1px solid #fde047;border-radius: 8px;padding: 1em 1.4em;margin: 1.5em 0\">\n<p style=\"margin: 0\"><strong>\u26a0\ufe0f \u81ea\u5df1\u8cac\u4efb\u30be\u30fc\u30f3\uff1a<\/strong>DB\u306b\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u3059\u308b\u65b9\u6cd5\u306f\u3001Dify\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u3067\u30b9\u30ad\u30fc\u30de\u304c\u5909\u308f\u308b\u30ea\u30b9\u30af\u304c\u3042\u308a\u307e\u3059\u3002\u672c\u756a\u904b\u7528\u306b\u7d44\u307f\u8fbc\u3080\u3088\u308a\u3001<strong>\u300c\u5206\u6790\u306e\u305f\u3081\u306b\u67081\u56de\u30c0\u30f3\u30d7\u3092\u53d6\u308b\u300d<\/strong>\u304f\u3089\u3044\u306e\u4f7f\u3044\u65b9\u304c\u304a\u3059\u3059\u3081\u3067\u3059\u3002\u66f8\u304d\u8fbc\u307f\u306f\u7d76\u5bfe\u306b\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/div>\n<p><!-- ===== 5. Langsmith ===== --><\/p>\n<h2 id=\"langsmith\">\u65b9\u6cd5\u2462 Langsmith \/ Langfuse \u306a\u3069\u306e\u89b3\u6e2c\u30c4\u30fc\u30eb<\/h2>\n<p>Dify\u306f v0.6.12 \u304b\u3089\u3001<strong>Langsmith<\/strong>\uff08LangChain\u793e\u306eObservability\u30b5\u30fc\u30d3\u30b9\uff09\u3068 <strong>Langfuse<\/strong>\uff08OSS\u306eLLM\u89b3\u6e2c\u30c4\u30fc\u30eb\uff09\u306e\u4e21\u65b9\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u3068\u9023\u643a\u3059\u308b\u3068\u3001\u4f1a\u8a71\u30ed\u30b0\u3060\u3051\u3067\u306a\u304f <strong>\u30c8\u30fc\u30af\u30f3\u6d88\u8cbb\u30fb\u5b9f\u884c\u6642\u9593\u30fb\u5404\u30ce\u30fc\u30c9\u306e\u4e2d\u9593\u51fa\u529b<\/strong> \u307e\u3067\u81ea\u52d5\u3067\u8a18\u9332\u3057\u3066\u304f\u308c\u307e\u3059\u3002<\/p>\n<h3>\u8a2d\u5b9a\u306f\u30af\u30ea\u30c3\u30af\u6570\u624b\u9806\u3060\u3051<\/h3>\n<ol>\n<li>Langsmith \/ Langfuse \u5074\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001API Key \u3092\u767a\u884c<\/li>\n<li>Dify\u30a2\u30d7\u30ea\u7ba1\u7406\u753b\u9762 \u2192 \u5de6\u30e1\u30cb\u30e5\u30fc\u300c\u76e3\u8996\u300d \u2192 \u300c\u30c8\u30ec\u30fc\u30b9\u30a2\u30d7\u30ea\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u300d<\/li>\n<li>API Key \u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u4fdd\u5b58<\/li>\n<\/ol>\n<p>\u3053\u308c\u3060\u3051\u3067\u3001\u4ee5\u964d\u306e\u3059\u3079\u3066\u306e\u4f1a\u8a71\u304c\u81ea\u52d5\u3067\u5916\u90e8\u30c4\u30fc\u30eb\u306b\u9001\u4fe1\u3055\u308c\u3001\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3067\u53ef\u8996\u5316\u3055\u308c\u307e\u3059\u3002<\/p>\n<h3>\u3053\u3093\u306a\u3068\u304d\u306b\u5411\u3044\u3066\u3044\u308b<\/h3>\n<ul>\n<li>\u4f1a\u8a71\u306e\u3069\u306e\u30ce\u30fc\u30c9\u3067\u6642\u9593\u304c\u304b\u304b\u3063\u3066\u3044\u308b\u306e\u304b\u8abf\u3079\u305f\u3044<\/li>\n<li>\u672c\u756a\u904b\u7528\u3067\u6708\u3044\u304f\u3089\u304b\u304b\u3063\u3066\u3044\u308b\u306e\u304b\uff08\u30c8\u30fc\u30af\u30f3\u6d88\u8cbb\uff09\u3092\u53ef\u8996\u5316\u3057\u305f\u3044<\/li>\n<li>\u5931\u6557\u3057\u305f\u4f1a\u8a71\u3084\u30a8\u30e9\u30fc\u6642\u306e\u6319\u52d5\u3092\u30d4\u30f3\u30dd\u30a4\u30f3\u30c8\u3067\u78ba\u8a8d\u3057\u305f\u3044<\/li>\n<li>RAG\u306e retrieval\uff08\u691c\u7d22\uff09\u7d50\u679c\u3092\u30c8\u30ec\u30fc\u30b9\u3057\u305f\u3044<\/li>\n<\/ul>\n<div style=\"background: #f0fdf4;border: 1px solid #86efac;border-radius: 8px;padding: 1em 1.4em;margin: 1.5em 0\">\n<p style=\"margin: 0\"><strong>\u2705 \u500b\u4eba\u7684\u306a\u304a\u3059\u3059\u3081\uff1a<\/strong>Langfuse \u306f\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u53ef\u80fd\u3067OSS\u306e\u305f\u3081\u3001\u6a5f\u5bc6\u30c7\u30fc\u30bf\u3092\u6271\u3046\u6848\u4ef6\u306b\u3082\u5c0e\u5165\u3057\u3084\u3059\u3044\u3067\u3059\u3002<br \/>\nCloud\u306e\u7121\u6599\u67a0\u3067\u3082\u7d50\u69cb\u306a\u91cf\u3092\u634c\u3051\u308b\u306e\u3067\u3001<strong>\u300c\u89b3\u6e2c\u3057\u305f\u3044\u3051\u3069\u4e88\u7b97\u306f\u6291\u3048\u305f\u3044\u300d<\/strong>\u5834\u5408\u306f Langfuse \u304b\u3089\u8a66\u3059\u306e\u304c\u304a\u3059\u3059\u3081\u3067\u3059\u3002<\/p>\n<\/div>\n<p>\u305f\u3060\u3057\u3001Langsmith \/ Langfuse \u306f<strong>\u89b3\u6e2c\u30fb\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u76ee\u7684\u306e\u30c4\u30fc\u30eb<\/strong>\u3067\u3042\u308a\u3001\u6574\u3063\u305fCSV\u3092\u30b9\u30dd\u30c3\u30c8\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u7528\u9014\u306b\u306f\u5b8c\u5168\u306b\u306f\u5411\u304d\u307e\u305b\u3093\u3002\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u6a5f\u80fd\u306f\u3042\u308b\u3082\u306e\u306e\u3001\u300c\u6574\u5f62\u3057\u3066\u5206\u6790\u8cc7\u6599\u3092\u4f5c\u308b\u300d\u30d5\u30a7\u30fc\u30ba\u3067\u306f\u7d50\u5c40SQL\u3084\u6b21\u306ePython\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u983c\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p><!-- ===== 6. Python ===== --><\/p>\n<h2 id=\"python\">\u65b9\u6cd5\u2463 Python\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u5b9a\u671f\u30a8\u30af\u30b9\u30dd\u30fc\u30c8<\/h2>\n<p>\u300c\u6bce\u9031\u6708\u66dc\u306bCSV\u3092\u81ea\u52d5\u751f\u6210\u3057\u3066Slack\u306b\u6295\u3052\u305f\u3044\u300d\u307f\u305f\u3044\u306a\u5b9a\u671f\u7684\u306a\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3092\u3057\u305f\u3044\u5834\u5408\u306f\u3001<strong>\u516c\u5f0fAPI\u3092Python\u3067\u30e9\u30c3\u30d7\u3057\u3066\u30b9\u30af\u30ea\u30d7\u30c8\u5316<\/strong>\u3059\u308b\u306e\u304c\u73fe\u5b9f\u7684\u3067\u3059\u3002Dify\u30b5\u30fc\u30d0\u30fc\u3068\u540c\u3058\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5185\u306e\u30de\u30b7\u30f3\u3084\u3001CI\u30b5\u30fc\u30d0\u30fc\uff08GitHub Actions\u7b49\uff09\u304b\u3089\u5b9f\u884c\u3059\u308b\u69cb\u6210\u306b\u3057\u3066\u304a\u304f\u3068\u904b\u7528\u304c\u30e9\u30af\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<h3>\u6700\u5c0f\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9<\/h3>\n<pre style=\"background: #0f172a;color: #e2e8f0;padding: 1.2em 1.5em;border-radius: 8px;font-size: 0.88em;line-height: 1.7\"><code>import os\r\nimport csv\r\nimport requests\r\n\r\nAPI_BASE = \"https:\/\/api.dify.ai\/v1\"  # self-host \u306a\u3089\u81ea\u793e\u30c9\u30e1\u30a4\u30f3\u306b\u5dee\u3057\u66ff\u3048\r\nAPI_KEY  = os.environ[\"DIFY_API_KEY\"]\r\nUSER_ID  = \"your-end-user-id\"\r\n\r\nHEADERS = {\"Authorization\": f\"Bearer {API_KEY}\"}\r\n\r\n\r\ndef fetch_conversations(user_id: str) -&gt; list:\r\n    \"\"\"\u30e6\u30fc\u30b6\u30fc\u5358\u4f4d\u3067\u4f1a\u8a71\u4e00\u89a7\u3092\u5168\u4ef6\u53d6\u5f97\"\"\"\r\n    convs, last_id = [], None\r\n    while True:\r\n        params = {\"user\": user_id, \"limit\": 100}\r\n        if last_id:\r\n            params[\"last_id\"] = last_id\r\n        r = requests.get(f\"{API_BASE}\/conversations\", headers=HEADERS, params=params)\r\n        r.raise_for_status()\r\n        data = r.json()\r\n        convs.extend(data[\"data\"])\r\n        if not data.get(\"has_more\"):\r\n            break\r\n        last_id = data[\"data\"][-1][\"id\"]\r\n    return convs\r\n\r\n\r\ndef fetch_messages(conv_id: str, user_id: str) -&gt; list:\r\n    \"\"\"\u4f1a\u8a71\u5358\u4f4d\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u5168\u4ef6\u53d6\u5f97\"\"\"\r\n    r = requests.get(\r\n        f\"{API_BASE}\/messages\",\r\n        headers=HEADERS,\r\n        params={\"conversation_id\": conv_id, \"user\": user_id, \"limit\": 100},\r\n    )\r\n    r.raise_for_status()\r\n    return r.json()[\"data\"]\r\n\r\n\r\ndef export_to_csv(user_id: str, out_path: str):\r\n    with open(out_path, \"w\", encoding=\"utf-8\", newline=\"\") as f:\r\n        w = csv.writer(f)\r\n        w.writerow([\"conversation_id\", \"created_at\", \"query\", \"answer\"])\r\n        for c in fetch_conversations(user_id):\r\n            for m in fetch_messages(c[\"id\"], user_id):\r\n                w.writerow([c[\"id\"], m[\"created_at\"], m[\"query\"], m[\"answer\"]])\r\n\r\n\r\nif __name__ == \"__main__\":\r\n    export_to_csv(USER_ID, \"dify_logs.csv\")\r\n    print(\"\u2705 \u5b8c\u4e86\uff1adify_logs.csv\")<\/code><\/pre>\n<p>\u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092 <strong>cron \/ launchd \/ GitHub Actions<\/strong> \u7b49\u3067\u5b9a\u671f\u5b9f\u884c\u3059\u308c\u3070\u3001\u6bce\u65e5\u30fb\u6bce\u9031\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u304c\u81ea\u52d5\u5316\u3067\u304d\u307e\u3059\u3002\u3042\u3068\u306f\u304a\u597d\u307f\u3067 Slack \u901a\u77e5\u3084 Google Sheets \u3078\u306e\u6295\u5165\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3068\u3001\u904b\u7528\u30c4\u30fc\u30eb\u3068\u3057\u3066\u5b8c\u6210\u5f62\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p><!-- ===== 7. \u3069\u308c\u3092\u9078\u3076 ===== --><\/p>\n<h2 id=\"which\">\u7d50\u5c40\u3069\u308c\u3092\u9078\u3079\u3070\u3044\u3044\uff1f<\/h2>\n<p>\u7528\u9014\u5225\u306e\u304a\u3059\u3059\u3081\u3092\u307e\u3068\u3081\u308b\u3068\u3001\u3053\u3093\u306a\u611f\u3058\u3067\u3059\u3002<\/p>\n<div style=\"margin: 1.5em 0\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 0.92em\">\n<thead>\n<tr style=\"background: #1e40af;color: #fff\">\n<th style=\"padding: 0.7em 1em;text-align: left\">\u3084\u308a\u305f\u3044\u3053\u3068<\/th>\n<th style=\"padding: 0.7em 1em;text-align: left\">\u304a\u3059\u3059\u3081\u306e\u65b9\u6cd5<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\">\u3044\u307e\u3059\u3050\u624b\u5143\u306b\u30ed\u30b0\u3092\u843d\u3068\u3057\u305f\u3044\uff08\u4e00\u56de\u304d\u308a\uff09<\/td>\n<td style=\"padding: 0.7em 1em\">\u2460 API \u3092 Postman \/ curl \u3067\u53e9\u304f<\/td>\n<\/tr>\n<tr style=\"background: #f8fafc;border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\">\u5168\u4ef6\u30fb\u6a2a\u65ad\u7684\u306b\u5206\u6790\u3057\u305f\u3044<\/td>\n<td style=\"padding: 0.7em 1em\">\u2461 PostgreSQL \u306b \\copy \u3067CSV\u51fa\u529b<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\">\u672c\u756a\u904b\u7528\u4e2d\u3001\u6027\u80fd\u30fb\u30b3\u30b9\u30c8\u3092\u7d99\u7d9a\u76e3\u8996\u3057\u305f\u3044<\/td>\n<td style=\"padding: 0.7em 1em\">\u2462 Langfuse\uff08\u7121\u6599\u67a0\u3042\u308a\uff09\u307e\u305f\u306f Langsmith<\/td>\n<\/tr>\n<tr style=\"background: #f8fafc;border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\">\u6bce\u9031CSV\u81ea\u52d5\u751f\u6210\u30fb\u793e\u5185\u5171\u6709\u3057\u305f\u3044<\/td>\n<td style=\"padding: 0.7em 1em\">\u2463 Python + cron \u3067\u5b9a\u671f\u5b9f\u884c<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #e2e8f0\">\n<td style=\"padding: 0.7em 1em\">\u6a5f\u5bc6\u30c7\u30fc\u30bf\u3092\u793e\u5916\u30b5\u30fc\u30d3\u30b9\u306b\u51fa\u3057\u305f\u304f\u306a\u3044<\/td>\n<td style=\"padding: 0.7em 1em\">\u2461 SQL or \u2462 Langfuse \u30bb\u30eb\u30d5\u30db\u30b9\u30c8<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u500b\u4eba\u7684\u306b\u306f\u3001<strong>\u300c\u3068\u308a\u3042\u3048\u305aAPI\u3067\u53d6\u308c\u308b\u5f62\u306b\u3057\u3066\u304a\u3044\u3066\u3001\u5206\u6790\u304c\u5927\u4e8b\u306b\u306a\u3063\u3066\u304d\u305f\u3089SQL\u3084Langfuse\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u300d<\/strong>\u3068\u3044\u3046\u80b2\u3066\u65b9\u304c\u3001\u5f8c\u623b\u308a\u304c\u5c11\u306a\u304f\u3066\u3088\u3044\u5370\u8c61\u3067\u3059\u3002<\/p>\n<p><!-- ===== 8. \u307e\u3068\u3081 ===== --><\/p>\n<h2 id=\"summary\">\u307e\u3068\u3081<\/h2>\n<p>Dify\u306e\u4f1a\u8a71\u30ed\u30b0\u53d6\u5f97\u3001\u6539\u3081\u3066\u30dd\u30a4\u30f3\u30c8\u3092\u6574\u7406\u3059\u308b\u3068\uff1a<\/p>\n<ul>\n<li>\u7ba1\u7406\u753b\u9762\u3067\u306fCSV\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3067\u304d\u306a\u3044 \u2192 \u5225\u624b\u6bb5\u304c\u5fc5\u8981<\/li>\n<li><strong>\u516c\u5f0fAPI<\/strong>\u306f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3082\u6574\u3063\u3066\u3044\u3066\u4e00\u756a\u5b89\u5168\u306a\u9078\u629e\u80a2<\/li>\n<li><strong>PostgreSQL\u76f4\u30af\u30a8\u30ea<\/strong>\u306f\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u306a\u3089\u3067\u306f\u306e\u5f37\u529b\u306a\u624b\u6bb5\uff08\u66f8\u304d\u8fbc\u307f\u306f\u53b3\u7981\uff09<\/li>\n<li><strong>Langsmith \/ Langfuse<\/strong>\u306f\u89b3\u6e2c\u30fb\u30c7\u30d0\u30c3\u30b0\u7528\u9014\u3067\u5f37\u3044\u5473\u65b9\u306b\u306a\u308b\uff08Langfuse\u306f\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u3082\u53ef\u80fd\uff09<\/li>\n<li><strong>Python + cron<\/strong>\u3067\u5b9a\u671f\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3092\u81ea\u52d5\u5316\u3059\u308b\u3068\u904b\u7528\u304c\u3050\u3063\u3068\u30e9\u30af\u306b\u306a\u308b<\/li>\n<\/ul>\n<p>\u300c\u30ed\u30b0\u304c\u53d6\u308c\u306a\u3044\u3068Dify\u306e\u6d3b\u7528\u304c\u5e83\u304c\u3089\u306a\u3044\u300d\u3068\u3044\u3046\u3054\u76f8\u8ac7\u306f\u3068\u3066\u3082\u591a\u3044\u306e\u3067\u3059\u304c\u3001\u4e0a\u8a18\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u3060\u3044\u305f\u3044\u89e3\u6c7a\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002\u793e\u5185\u6848\u4ef6\u30fbPoC\u3067\u56f0\u3063\u3066\u3044\u308b\u65b9\u306e\u53c2\u8003\u306b\u306a\u308c\u3070\u5e78\u3044\u3067\u3059\u3002<\/p>\n<p>\u30d0\u30a4\u30bf\u30ea\u30d5\u30a3\u3067\u306f\u3001Dify\u3092\u6d3b\u7528\u3057\u305fAI\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\u306e\u8a2d\u8a08\u30fb\u69cb\u7bc9\u304b\u3089\u3001\u30ed\u30b0\u5206\u6790\u57fa\u76e4\u306e\u69cb\u7bc9\u307e\u3067\u652f\u63f4\u3057\u3066\u3044\u307e\u3059\u3002\u300c\u4f1a\u8a71\u30ed\u30b0\u3092\u4f7f\u3063\u3066\u6539\u5584\u30b5\u30a4\u30af\u30eb\u3092\u56de\u3057\u305f\u3044\u300d\u300cBI\u30c4\u30fc\u30eb\u306b\u7e4b\u304e\u305f\u3044\u300d\u3068\u3044\u3063\u305f\u3054\u76f8\u8ac7\u304c\u3042\u308c\u3070\u3001\u304a\u6c17\u8efd\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002<\/p>\n<div style=\"background: #eff6ff;border: 1px solid #bfdbfe;border-radius: 8px;padding: 1em 1.4em;margin: 2em 0\">\n<p style=\"margin: 0 0 0.4em 0;font-weight: bold\">\ud83d\udcda \u53c2\u8003\u30ea\u30f3\u30af<\/p>\n<ul style=\"margin: 0;padding-left: 1.4em;line-height: 2\">\n<li><a href=\"https:\/\/docs.dify.ai\/api-reference\/conversations\/get-conversation-history-messages\" target=\"_blank\" rel=\"noopener noreferrer\">Dify \u516c\u5f0fAPI\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\uff1aGet Conversation History Messages<\/a><\/li>\n<li><a href=\"https:\/\/docs.dify.ai\/en\/use-dify\/monitor\/integrations\/integrate-langsmith\" target=\"_blank\" rel=\"noopener noreferrer\">Dify \u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff1aIntegrate with LangSmith<\/a><\/li>\n<li><a href=\"https:\/\/langfuse.com\/docs\/integrations\/dify\" target=\"_blank\" rel=\"noopener noreferrer\">Langfuse \u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff1aObservability and tracing for Dify<\/a><\/li>\n<li><a href=\"https:\/\/dify.ai\/blog\/dify-integrates-langsmith-langfuse\" target=\"_blank\" rel=\"noopener noreferrer\">Dify Blog\uff1aEnhance LLM Application Observability on Dify with LangSmith and Langfuse<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/langgenius\/dify\" target=\"_blank\" rel=\"noopener noreferrer\">Dify GitHub \u30ea\u30dd\u30b8\u30c8\u30ea<\/a><\/li>\n<\/ul>\n<\/div>\n<div class='wp_social_bookmarking_light'>\n            <div class=\"wsbl_facebook_like\"><div id=\"fb-root\"><\/div><fb:like href=\"https:\/\/vitalify.jp\/blog\/2026\/05\/dify-log-howto.html\" layout=\"button_count\" action=\"like\" share=\"false\" show_faces=\"false\" ><\/fb:like><\/div>\n            <div class=\"wsbl_google_plus_one\"><g:plusone size=\"medium\" annotation=\"none\" href=\"https:\/\/vitalify.jp\/blog\/2026\/05\/dify-log-howto.html\" ><\/g:plusone><\/div>\n            <div class=\"wsbl_hatena_button\"><a href=\"\/\/b.hatena.ne.jp\/entry\/https:\/\/vitalify.jp\/blog\/2026\/05\/dify-log-howto.html\" class=\"hatena-bookmark-button\" data-hatena-bookmark-title=\"Dify\u306e\u4f1a\u8a71\u30ed\u30b0\u3092CSV\u51fa\u529b\u30fb\u5206\u6790\u3059\u308b\u65b9\u6cd5\" data-hatena-bookmark-layout=\"standard\" title=\"\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0\"> <img src=\"\/\/b.hatena.ne.jp\/images\/entry-button\/button-only@2x.png\" alt=\"\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0\" width=\"20\" height=\"20\" style=\"border: none;\" \/><\/a><script type=\"text\/javascript\" src=\"\/\/b.hatena.ne.jp\/js\/bookmark_button.js\" charset=\"utf-8\" async=\"async\"><\/script><\/div>\n            <div class=\"wsbl_tumblr\"><a href=\"\/\/www.tumblr.com\/share?v=3&u=https%3A%2F%2Fvitalify.jp%2Fblog%2F2026%2F05%2Fdify-log-howto.html&t=Dify%E3%81%AE%E4%BC%9A%E8%A9%B1%E3%83%AD%E3%82%B0%E3%82%92CSV%E5%87%BA%E5%8A%9B%E3%83%BB%E5%88%86%E6%9E%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95\" title=\"Share on Tumblr\" style=\"display:inline-block; text-indent:-9999px; overflow:hidden; width:81px; height:20px; background:url('\/\/platform.tumblr.com\/v1\/share_1.png') top left no-repeat transparent;\">Share on Tumblr<\/a><\/div>\n            <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/vitalify.jp\/blog\/2026\/05\/dify-log-howto.html\" data-text=\"Dify\u306e\u4f1a\u8a71\u30ed\u30b0\u3092CSV\u51fa\u529b\u30fb\u5206\u6790\u3059\u308b\u65b9\u6cd5\" data-lang=\"ja\">Tweet<\/a><\/div>\n    <\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f\u3002\u6a2a\u7530\u3067\u3059\u3002 Dify\u3067\u4f5c\u3063\u305f\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\u3092\u793e\u5185\u3084\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u69d8\u306b\u5c55\u958b\u3057\u3066\u3044\u308b\u3068\u3001\u7d50\u69cb\u3088\u304f\u805e\u304b\u308c\u308b\u306e\u304c\u300c\u4f1a\u8a71\u30ed\u30b0\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u305f\u3044\u300d\u300c\u904e\u53bb\u306e\u4f1a\u8a71\u3092\u5206\u6790\u3057\u305f\u3044\u300d\u3068\u3044\u3046\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u3059\u3002<\/p>\n","protected":false},"author":192,"featured_media":44027,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[44],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/posts\/44022"}],"collection":[{"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/users\/192"}],"replies":[{"embeddable":true,"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/comments?post=44022"}],"version-history":[{"count":9,"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/posts\/44022\/revisions"}],"predecessor-version":[{"id":44032,"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/posts\/44022\/revisions\/44032"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/media\/44027"}],"wp:attachment":[{"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/media?parent=44022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/categories?post=44022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vitalify.jp\/blog\/wp-json\/wp\/v2\/tags?post=44022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}