Skip to content

Commit 3acd375

Browse files
committed
refactor: 使用类型守卫收窄 Langfuse role
1 parent 67337d5 commit 3acd375

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

src/services/langfuse/convert.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,18 @@ type LangfuseChatMessage = {
3030
tool_call_id?: string
3131
}
3232

33+
function isLangfuseRole(value: unknown): value is LangfuseChatMessage['role'] {
34+
switch (value) {
35+
case 'user':
36+
case 'assistant':
37+
case 'system':
38+
case 'tool':
39+
return true
40+
default:
41+
return false
42+
}
43+
}
44+
3345
type LangfuseInputMessage =
3446
| UserMessage
3547
| AssistantMessage
@@ -144,11 +156,11 @@ export function convertMessagesToLangfuse(
144156
}
145157
}
146158
for (const msg of messages) {
147-
const inner = 'message' in msg ? msg.message : msg
159+
const isWrappedMessage = 'message' in msg
160+
const inner = isWrappedMessage ? msg.message : msg
148161
if (!inner) continue
149162
const role =
150-
(inner.role as 'user' | 'assistant' | 'system' | 'tool' | undefined) ??
151-
('message' in msg ? toRole(msg) : 'user')
163+
isLangfuseRole(inner.role) ? inner.role : isWrappedMessage ? toRole(msg) : 'user'
152164
const rawContent = inner.content
153165
if (typeof rawContent === 'string' || !Array.isArray(rawContent)) {
154166
result.push({

0 commit comments

Comments
 (0)