rubberduck-ai/rubberduck-vscode

Having set my own base-url came an unknown error And The answer would never complete.

Jinghao-Tu opened this issue · 6 comments

Describe the bug

Having set my own base-url came an unknown error And The answer would never complete.

How to reproduce

Set base-url like 'https://api.xxx.com/v1/' and ask any questions.

Expected behavior

There is no "Error: Unknown Error" and the answer can be completed.

Screenshots

屏幕截图 2023-03-19 125618

Additional information

  • Version of the extension impacted: v1.14.0

🧙‍ Add any other context about the problem here.

I built a Cloudflares Worker to reproxy the base-url. The Worker's code is here.

const TELEGRAPH_URL = 'https://api.openai.com';

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const url = new URL(request.url);
  url.host = TELEGRAPH_URL.replace(/^https?:\/\//, '');

  const modifiedRequest = new Request(url.toString(), {
    headers: request.headers,
    method: request.method,
    body: request.body,
    redirect: 'follow'
  });

  const response = await fetch(modifiedRequest);
  const modifiedResponse = new Response(response.body, response);

  modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');

  return modifiedResponse;
}

Can you check the vscode dev console for errors (and the rubberduck output)?

Rubberduck uses the OpenAI streaming API - maybe that causes the issue.

Can you check the vscode dev console for errors (and the rubberduck output)?

Rubberduck uses the OpenAI streaming API - maybe that causes the issue.

Here is the rubberduck putput.

[INFO] --- Start OpenAI prompt ---
[INFO] [{"role":"user","content":"## Instructions\nContinue the conversation below.\nPay special attention to the current developer request.\n\n## Current Request\nDeveloper: hi\n\n\n## Conversation\nDeveloper: hi\n\n## Task\nWrite a response that continues the conversation.\nStay focused on current developer request.\nConsider the possibility that there might not be a solution.\nAsk for clarification if the message does not make sense or more input is needed.\nUse the style of a documentation article.\nOmit any links.\nInclude code snippets (using Markdown) and examples where appropriate.\n\n## Response\nBot:"}]
[INFO] --- End OpenAI prompt ---
[ERROR] Failed to process chunk
[ERROR] data: {"id":"chatcmpl-6vpCmy1eGOt3egUjnkOvVEkIL9S8n","object":"chat.completion.chunk","created":1679239548,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"role":"assistant"},"index":0,"finish_reason":null}]}

data: {"id":"chatcmpl-6vpCmy1eGOt3egUjnkOvVEkIL9S8n","object":"chat.completion.chunk","cr
[ERROR] Something went wrong with OpenAI
[ERROR] Unknown error
[ERROR] Failed to process chunk
[ERROR] eated":1679239548,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"Hello"},"index":0,"finish_reason":null}]}

More output

[INFO] --- Start OpenAI prompt ---
[INFO] [{"role":"user","content":"## Instructions\nContinue the conversation below.\nPay special attention to the current developer request.\n\n## Current Request\nDeveloper: hi\n\n\n## Conversation\nDeveloper: hi\n\n## Task\nWrite a response that continues the conversation.\nStay focused on current developer request.\nConsider the possibility that there might not be a solution.\nAsk for clarification if the message does not make sense or more input is needed.\nUse the style of a documentation article.\nOmit any links.\nInclude code snippets (using Markdown) and examples where appropriate.\n\n## Response\nBot:"}]
[INFO] --- End OpenAI prompt ---
[ERROR] Failed to process chunk
[ERROR] data: {"id":"chatcmpl-6vpGO5ndX9uA2dDfGJ0uAooBWUCqC","object":"chat.completion.chunk","created":1679239772,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"role":"assistant"},"index":0,"finish_reason":null}]}

data: {"id":"chatcmpl-6vpGO5ndX9uA2dDfGJ0uAooBWUCqC","object":"chat.completion.chunk","created":167
[ERROR] Something went wrong with OpenAI
[ERROR] Unknown error
[ERROR] Failed to process chunk
[ERROR] 9239772,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"Hello"},"index":0,"finish_reason":null}]}


[ERROR] Failed to process chunk
[ERROR] data: {"id":"chatcmpl-6vpGO5
[ERROR] Failed to process chunk
[ERROR] ndX9uA2dDfGJ0uAooBWUCqC","object":"chat.completion.chunk","created":1679239772,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":" I"},"index":0,"finish_reason":null}]}


[ERROR] Failed to process chunk
[ERROR] data: {"id":"chatcmpl-6vpGO5
[ERROR] Failed to process chunk
[ERROR] ndX9uA2dDfGJ0uAooBWUCqC","object":"chat.completion.chunk","created":1679239772,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"?"},"index":0,"finish_reason":null}]}


[ERROR] Failed to process chunk
[ERROR] data: {"id":"chatcmpl-6vpGO5
[ERROR] Failed to process chunk
[ERROR] ndX9uA2dDfGJ0uAooBWUCqC","object":"chat.completion.chunk","created":1679239772,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":" your"},"index":0,"finish_reason":null}]}


[ERROR] Failed to process chunk
[ERROR] data: {"id":"chatcmpl-6vpGO5
[ERROR] Failed to process chunk
[ERROR] ndX9uA2dDfGJ0uAooBWUCqC","object":"chat.completion.chunk","created":1679239772,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"!"},"index":0,"finish_reason":null}]}

VSC dev console output

There is nothing about rubberduck.

It seems like something is wrong with the chunks. My guess is that they somehow get modified in the proxy.

Can you set the log level to debug and try again? This should show the full chunks for inspection.

image

Here is debug output:

[INFO] --- Start OpenAI prompt ---
[INFO] [{"role":"user","content":"## Instructions\nContinue the conversation below.\nPay special attention to the current developer request.\n\n## Current Request\nDeveloper: hi\n\n\n## Conversation\nDeveloper: hi\n\n## Task\nWrite a response that continues the conversation.\nStay focused on current developer request.\nConsider the possibility that there might not be a solution.\nAsk for clarification if the message does not make sense or more input is needed.\nUse the style of a documentation article.\nOmit any links.\nInclude code snippets (using Markdown) and examples where appropriate.\n\n## Response\nBot:"}]
[INFO] --- End OpenAI prompt ---
[DEBUG] Fetch OpenAI API key
[DEBUG] OpenAI API key retrieved
[DEBUG] Execute POST request to OpenAI (url=https://openai-api. (MyDomain) .com/v1, max_tokens=1024, temperature=0)
[DEBUG] Streaming the response
[DEBUG] Streaming data, process chunk (chunk size=303)
[DEBUG] Process next line of chunk
[DEBUG] Process next line of chunk
[ERROR] Failed to process chunk
[ERROR] data: {"id":"chatcmpl-6w1ir7RSse76rSGzogdFpR8f96BfM","object":"chat.completion.chunk","created":1679287665,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"role":"assistant"},"index":0,"finish_reason":null}]}

data: {"id":"chatcmpl-6w1ir7RSse76rSGzogdFpR8f96BfM","object":"chat.completion.chunk","crea
[ERROR] Something went wrong with OpenAI
[ERROR] Unknown error
[DEBUG] Streaming data, process chunk (chunk size=120)
[DEBUG] Process next line of chunk
[ERROR] Failed to process chunk
[ERROR] ted":1679287665,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"Hello"},"index":0,"finish_reason":null}]}


[DEBUG] Streaming data, process chunk (chunk size=212)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=207)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=216)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=207)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=210)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=210)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=208)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=213)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=210)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=212)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=207)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=209)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=212)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=208)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=215)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=211)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=209)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=212)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=210)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=211)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=211)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=211)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=207)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=213)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=214)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=211)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=218)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=209)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=208)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=210)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=213)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=217)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=211)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=214)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=210)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=214)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=210)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=218)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=215)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=207)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=212)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=210)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=207)
[DEBUG] Process next line of chunk
[DEBUG] Streaming data, process chunk (chunk size=210)
[DEBUG] Process next line of chunk
[DEBUG] Processed last line of chunk
[DEBUG] Stream ended but was already resolved. Do nothing.