Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
bit-pm
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
燕伟桐
bit-pm
Commits
cb60a056
Unverified
提交
cb60a056
authored
7月 17, 2025
作者:
Will Chen
提交者:
GitHub
7月 17, 2025
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Send request id for LLM engine calls (#659)
上级
29065335
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
35 行增加
和
5 行删除
+35
-5
chat_stream_handlers.ts
src/ipc/handlers/chat_stream_handlers.ts
+9
-1
llm_engine_provider.ts
src/ipc/utils/llm_engine_provider.ts
+26
-4
没有找到文件。
src/ipc/handlers/chat_stream_handlers.ts
浏览文件 @
cb60a056
import
{
v4
as
uuidv4
}
from
"uuid"
;
import
{
ipcMain
}
from
"electron"
;
import
{
CoreMessage
,
...
...
@@ -534,12 +535,16 @@ This conversation includes one or more image attachments. When the user uploads
chatMessages
:
CoreMessage
[];
modelClient
:
ModelClient
;
})
=>
{
const
dyadRequestId
=
uuidv4
();
return
streamText
({
maxTokens
:
await
getMaxTokens
(
settings
.
selectedModel
),
temperature
:
0
,
maxRetries
:
2
,
model
:
modelClient
.
model
,
providerOptions
:
{
"dyad-engine"
:
{
dyadRequestId
,
},
"dyad-gateway"
:
getExtraProviderOptions
(
modelClient
.
builtinProviderId
,
settings
,
...
...
@@ -560,9 +565,12 @@ This conversation includes one or more image attachments. When the user uploads
errorMessage
+=
"
\
n
\
nDetails: "
+
responseBody
;
}
const
message
=
errorMessage
||
JSON
.
stringify
(
error
);
const
requestIdPrefix
=
isEngineEnabled
?
`[Request ID:
${
dyadRequestId
}
] `
:
""
;
event
.
sender
.
send
(
"chat:response:error"
,
`Sorry, there was an error from the AI:
${
message
}
`
,
`Sorry, there was an error from the AI:
${
requestIdPrefix
}${
message
}
`
,
);
// Clean up the abort controller
activeStreams
.
delete
(
req
.
chatId
);
...
...
src/ipc/utils/llm_engine_provider.ts
浏览文件 @
cb60a056
...
...
@@ -75,6 +75,10 @@ export function createDyadEngine(
):
DyadEngineProvider
{
const
baseURL
=
withoutTrailingSlash
(
options
.
baseURL
);
logger
.
info
(
"creating dyad engine with baseURL"
,
baseURL
);
// Track request ID attempts
const
requestIdAttempts
=
new
Map
<
string
,
number
>
();
const
getHeaders
=
()
=>
({
Authorization
:
`Bearer
${
loadApiKey
({
apiKey
:
options
.
apiKey
,
...
...
@@ -91,8 +95,8 @@ export function createDyadEngine(
fetch
?:
FetchFunction
;
}
const
getCommonModelConfig
=
(
modelType
:
string
):
CommonModelConfig
=>
({
provider
:
`
example.
${
modelType
}
`
,
const
getCommonModelConfig
=
():
CommonModelConfig
=>
({
provider
:
`
dyad-engine
`
,
url
:
({
path
})
=>
{
const
url
=
new
URL
(
`
${
baseURL
}${
path
}
`
);
if
(
options
.
queryParams
)
{
...
...
@@ -113,7 +117,7 @@ export function createDyadEngine(
// Create configuration with file handling
const
config
=
{
...
getCommonModelConfig
(
"chat"
),
...
getCommonModelConfig
(),
defaultObjectGenerationMode
:
"tool"
as
LanguageModelV1ObjectGenerationMode
,
// Custom fetch implementation that adds files to the request
...
...
@@ -132,6 +136,18 @@ export function createDyadEngine(
options
.
settings
,
),
};
const
requestId
=
parsedBody
.
dyadRequestId
;
if
(
"dyadRequestId"
in
parsedBody
)
{
delete
parsedBody
.
dyadRequestId
;
}
// Track and modify requestId with attempt number
let
modifiedRequestId
=
requestId
;
if
(
requestId
)
{
const
currentAttempt
=
(
requestIdAttempts
.
get
(
requestId
)
||
0
)
+
1
;
requestIdAttempts
.
set
(
requestId
,
currentAttempt
);
modifiedRequestId
=
`
${
requestId
}
:attempt-
${
currentAttempt
}
`
;
}
// Add files to the request if they exist
if
(
files
?.
length
)
{
...
...
@@ -143,9 +159,15 @@ export function createDyadEngine(
};
}
// Return modified request with files included
// Return modified request with files included
and requestId in headers
const
modifiedInit
=
{
...
init
,
headers
:
{
...
init
.
headers
,
...(
modifiedRequestId
&&
{
"X-Dyad-Request-Id"
:
modifiedRequestId
,
}),
},
body
:
JSON
.
stringify
(
parsedBody
),
};
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论