From f2acc884230a43815ef86b9608d137cede624b3c Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Wed, 16 Apr 2025 21:49:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../open_ai_service/android/build.gradle.kts | 1 + .../open_ai_service/MCPClient.kt | 2 +- .../open_ai_service/OpenAIServicePlugin.kt | 21 ++++++++++++------- .../open_ai_service/lib/open_ai_service.dart | 4 ++-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/local_plugins/open_ai_service/android/build.gradle.kts b/local_plugins/open_ai_service/android/build.gradle.kts index 1f079fa6c..58c28775b 100644 --- a/local_plugins/open_ai_service/android/build.gradle.kts +++ b/local_plugins/open_ai_service/android/build.gradle.kts @@ -57,4 +57,5 @@ dependencies { implementation("io.ktor:ktor-client-cio:3.1.2") implementation("io.ktor:ktor-client-okhttp:3.1.2") implementation("io.ktor:ktor-client-logging:3.1.2") + implementation("com.google.code.gson:gson:2.10.1") } \ No newline at end of file diff --git a/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/MCPClient.kt b/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/MCPClient.kt index 60acd48db..78e607ef2 100644 --- a/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/MCPClient.kt +++ b/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/MCPClient.kt @@ -391,7 +391,7 @@ class MCPSubClient( else -> "" } } - JSONObject().apply { put("name",name);put("meta",result?._meta?.toMap()); put("context",context) } + JSONObject().apply { put("name",name);put("meta",result?._meta.toString()); put("context",context) } } catch (e: Exception) { Log.e(TAG, "调用MCP工具失败: ${e.message}", e) JSONObject().apply { put("context", "调用MCP工具失败: ${e.message}")} diff --git a/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/OpenAIServicePlugin.kt b/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/OpenAIServicePlugin.kt index 1948a2f13..a558fc6cf 100644 --- a/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/OpenAIServicePlugin.kt +++ b/local_plugins/open_ai_service/android/src/main/kotlin/com/yunqiinnovation/open_ai_service/OpenAIServicePlugin.kt @@ -168,14 +168,21 @@ class OpenAIServicePlugin : FlutterPlugin, MethodCallHandler, StreamHandler { Log.e("OpenAIServicePlugin", "context:${functionCall.toString()}") val context = functionCall["context"] if (functionCall.has("meta")) { - val meta = mapOf( - "card_spotify" to mapOf( - "name" to "泡沫", - "image" to "https://i.scdn.co/image/ab67616d0000b2739f6a38e4bb9c2f824c215e58", - "url" to "spotify:track:2IfSPLPDW6RGosdB5huwAA", - "sgener" to "Xposed", - ) + Log.e("OpenAIServicePlugin", + """ + 工具调用结果 meta 类型: ${functionCall["meta"]?.javaClass?.canonicalName} + 值内容: ${functionCall["meta"]} + """.trimIndent() ) + val meta = functionCall["meta"].toString() +// val meta = mapOf( +// "card_spotify" to mapOf( +// "name" to "泡沫", +// "image" to "https://i.scdn.co/image/ab67616d0000b2739f6a38e4bb9c2f824c215e58", +// "url" to "spotify:track:2IfSPLPDW6RGosdB5huwAA", +// "sgener" to "Xposed", +// ) +// ) Log.e("OpenAIServicePlugin", "工具调用结果 context:${context} meta:${meta.toString()}") // 发送函数调用事件 mainHandler.post { diff --git a/local_plugins/open_ai_service/lib/open_ai_service.dart b/local_plugins/open_ai_service/lib/open_ai_service.dart index f67d16169..20934fd07 100644 --- a/local_plugins/open_ai_service/lib/open_ai_service.dart +++ b/local_plugins/open_ai_service/lib/open_ai_service.dart @@ -32,8 +32,8 @@ class OpenAIEvent { factory OpenAIEvent.fromMap(Map map) { final typeStr = map['type'] as String; final content = map['content']; - final rawMeta = map['meta']; - final meta = rawMeta is Map ? Map.from(rawMeta) : null; + final rawMeta = map['meta'] as String?; + final meta = rawMeta != null ? jsonDecode(rawMeta) : null; return OpenAIEvent( type: _typeFromString(typeStr), content: content,