(1) Ensure that the large language model (LLM), its parameters, and concurrency capabilities meet the recommended LLM requirements.
(2) Ensure that the connection test has been completed:
Connectivity test between the FineAI plugin and the FineBI platform
LLM connection test
(1) If the connectivity test between the FineAI plugin and the FineBI platform fails:
Answer: Press F12 to open the browser developer tools and check the error_message field in the test request response. This helps determine whether FineBI cannot connect to FineAI or FineAI cannot connect to FineBI.
(2) If the LLM connection test fails:
Answer: Press F12 to check the error_message field in the request response to locate the specific cause.
Cause:
Network communication issue
Troubleshooting:
(1) Check whether the FineAI node is running normally.
FineAI can directly connect to the LLM, while BI-Web requires two-way communication with FineAI. You can click Test Connection to verify connectivity.
(2) If the connection test fails, press F12 to check the error_message field to locate the disconnection.
Dora must rely on tool_call, which is not supported by the current LLM.
Access the server where FineAI is deployed and perform tests using the following two curl commands. (Replace the URL, API key, and LLM name.) If the first command reports an error while the second one works normally, the currently used LLM does not support tool_call and needs to be replaced.
First command (with tool_call; error reported if unsupported)
curl -X POST 'http://<your-model-endpoint>/v1/chat/completions' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your-apikey>' \ -d '{ "model": "<your-model-name>", "messages": [{"role": "user", "content": "Hello!"}], "tools": [{ "type": "function", "function": { "name": "get_weather", "description": "", "parameters": { "type": "object", "properties": {"city": {"type": "string", "description": ""}}, "required": ["city"] } } }], "tool_choice": "auto", "stream": false }'
Second command (without tool_call; returned normally)
curl -X POST 'http://<your-model-endpoint>/v1/chat/completions' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your-apikey>' \ -d '{ "model": "<your-model-name>", "messages": [{"role": "user", "content": "Hello!"}], "stream": false }'
The deployed LLM may not comply with the OpenAI API protocol specifications.
Provide the API logs and contact FanRuan for troubleshooting.
Some LLMs only support system content as a string type and do not support other formats.
Check whether the currently used LLM has restrictions on the system content format. If so, adjust the request format accordingly.
Azure currently does not support the endpoint in the responses API format.
Solution:
Change the endpoint to the base URL format for a successful connection.
The LLM context length is less than 128K tokens.
Check whether the LLM context length meets the minimum requirement (128K tokens).
Azure LLMs have a built-in content safety rejection mechanism that interrupts the response when specific keywords are triggered.
Rephrase the question to prevent the rejection keywords from being triggered.
The LLM service is under heavy load and temporarily unable to respond.
Try again later. You can refer to the concurrency and performance reference in Recommended LLMs to evaluate the LLM load.
Insufficient LLM balance
Top up to resume use.
Problem:
Error code: 422 - {'error': 'Check open ai req parameter error', 'error_type': 'Input Validation Error'}
Log in to the server where FineAI is deployed and perform tests using the following two curl commands. If the first command reports an error while the second one works normally, it indicates that, at the OpenAI protocol compatibility layer, the API does not support the content block array format for messages.content (for example, "content": [{"type": "text", "text": "..."}]), and only supports the string format (for example, "content": "...").
First curl command
curl -X POST '<Customer's base_url>/chat/completions' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <Customer's API_KEY>' \ -d '{ "model": "<Customer's LLM name>", "stream": true, "stream_options": { "include_usage": true }, "messages": [ { "role": "system", "content": [ { "type": "text", "text": "You are llm-test. You are a helpful assistant." } ] }, { "role": "user", "content": "Test the tool invocation capability. This round is a dry-run connectivity test, and the tool will not be executed. Do not output natural language. Only invoke the tool llm_connectivity_probe, and pass in the JSON parameter {\"probe_text\":\"ok\"}." } ], "tools": [ { "type": "function", "function": { "name": "llm_connectivity_probe", "description": "Confirm that the model can emit a valid OpenAI tool call with JSON arguments.", "parameters": { "type": "object", "properties": { "probe_text": { "type": "string" } }, "required": [ "probe_text" ] } } } ] }'
Second curl command
curl -X POST '<Customer's base_url>/chat/completions' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <Customer's API_KEY>' \ -d '{ "model": "<Customer's LLM name>", "stream": true, "stream_options": { "include_usage": true }, "messages": [ { "role": "system", "content": "You are llm-test. You are a helpful assistant." }, { "role": "user", "content": "Test the tool invocation capability. This round is a dry-run connectivity test, and the tool will not be executed. Do not output natural language. Only invoke the tool llm_connectivity_probe, and pass in the JSON parameter {\"probe_text\":\"ok\"}." } ], "tools": [ { "type": "function", "function": { "name": "llm_connectivity_probe", "description": "Confirm that the model can emit a valid OpenAI tool call with JSON arguments.", "parameters": { "type": "object", "properties": { "probe_text": { "type": "string" } }, "required": [ "probe_text" ] } } } ] }'
Method one: Adjust the LLM to support content: [{type:"text", text:"..."}].
Method two: Directly switch to an LLM that supports content: [{type:"text", text:"..."}].