Skip to content

AI响应体格式不支持非“tool_calls ”格式 #4

@952714050

Description

@952714050

【如果AI返回的 JSON 响应中没有 tool_calls 字段,则报错:java.lang.NullPointerException: Cannot invoke "java.util.List.size()" because "toolCalls" is null】

具体log如下:
[2025-05-13T14:48:01.914+08:00] [ChatGPT request executor-1[com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTask@22010513]] INFO com.googlesource.gerrit.plugins.aicodereview.mode.stateless.client.api.chatai.AIChatClientStateless : Chat response body: {"choices":[{"finish_reason":"stop","index":0,"logprobs":null,"message":{"content":"json\n{\n \"replies\": [\n {\n \"reply\": \"删除的`msg_process`函数未被替代或迁移,可能导致功能缺失。\",\n \"score\": -1,\n \"relevance\": 0.8,\n \"repeated\": false,\n \"conflicting\": false,\n \"filename\": \"application/system/hsm_service/hsm_service.c\",\n \"lineNumber\": 3,\n \"codeSnippet\": \"static int msg_process(void)\\n{\\n return 0;\\n}\"\n },\n {\n \"reply\": \"条件逻辑从嵌套的`else if`改为独立的`if`,可能改变原有逻辑流程,需验证是否影响预期行为。\",\n \"score\": -1,\n \"relevance\": 0.7,\n \"repeated\": false,\n \"conflicting\": false,\n \"filename\": \"application/system/hsm_service/hsm_service.c\",\n \"lineNumber\": 10,\n \"codeSnippet\": \"if (len == sizeof(hsm_req_t)) {\\n hsm_main(cpuid, (hsm_req_t *)rx_buf, (hsm_resp_t *)tx_buf, hsm_mem_diff_table[cpuid]);\\n sample_process(chan, tx_buf, \u0026src, sizeof(hsm_resp_t));\\n continue;\\n }\"\n },\n {\n \"reply\": \"移除`msg_process`的调用可能导致未处理的遗留消息,需确认是否有替代处理逻辑。\",\n \"score\": -1,\n \"relevance\": 0.8,\n \"repeated\": false,\n \"conflicting\": false,\n \"filename\": \"application/system/hsm_service/hsm_service.c\",\n \"lineNumber\": 20,\n \"codeSnippet\": \"msg_process();\\n }\\n\\n ipcc_channel_stop(chan);\\n ipcc_channel_destroy(chan);\"\n }\n ],\n \"changeId\": \"lk_customize~X9_PTG6.0~I74bb42b980ccace3b548df1c3bdfc6582f66b30b\"\n}\n","role":"assistant"}}],"created":1747118881,"id":"021747118859242c51df1b11f9466da946dd9bf1ba1370f1e9884","model":"deepseek-v3-250324","service_tier":"default","object":"chat.completion","usage":{"completion_tokens":468,"prompt_tokens":1173,"total_tokens":1641,"prompt_tokens_details":{"cached_tokens":0},"completion_tokens_details":{"reasoning_tokens":0}}}
[2025-05-13T14:48:01.917+08:00] [ChatGPT request executor-1[com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTask@22010513]] ERROR com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTask : Error while processing change: lk_customizeX9_PTG6.0I74bb42b980ccace3b548df1c3bdfc6582f66b30b
java.lang.NullPointerException: Cannot invoke "java.util.List.size()" because "toolCalls" is null
at com.googlesource.gerrit.plugins.aicodereview.mode.common.client.api.openai.AIChatClient.getResponseContent(AIChatClient.java:100)
at com.googlesource.gerrit.plugins.aicodereview.mode.common.client.api.openai.AIChatClient.extractContent(AIChatClient.java:56)
at com.googlesource.gerrit.plugins.aicodereview.mode.stateless.client.api.chatai.AIChatClientStateless.ask(AIChatClientStateless.java:79)
at com.googlesource.gerrit.plugins.aicodereview.PatchSetReviewer.getReviewReply(PatchSetReviewer.java:217)
at com.googlesource.gerrit.plugins.aicodereview.PatchSetReviewer.review(PatchSetReviewer.java:108)
at com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTypePatchSetReview.processEvent(EventHandlerTypePatchSetReview.java:71)
at com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTask.execute(EventHandlerTask.java:116)
at com.googlesource.gerrit.plugins.aicodereview.listener.EventHandlerTask.run(EventHandlerTask.java:103)
at com.google.gerrit.server.logging.LoggingContextAwareRunnable.run(LoggingContextAwareRunnable.java:113)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:699)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions