Skip to content

Commit fa9f53a

Browse files
committed
fix: don't use content field of v2 message
1 parent b62a83b commit fa9f53a

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

src/ChatEventHandler.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,14 @@ export class ChatEventHandler {
190190

191191
private async initializeResponseMessage() {
192192
this.alreadySentMessages[0] = await this.message.reply({
193-
content: `> ${ChatEventHandler.DISCORD_LOADING_EMOJI_PLACEHOLDER} 생각중...`,
193+
components: [
194+
new TextDisplayBuilder()
195+
.setContent(
196+
`> ${ChatEventHandler.DISCORD_LOADING_EMOJI_PLACEHOLDER} 생각중...`
197+
)
198+
.toJSON()
199+
],
200+
flags: [MessageFlags.IsComponentsV2],
194201
allowedMentions: {
195202
repliedUser: false
196203
}
@@ -231,7 +238,9 @@ export class ChatEventHandler {
231238
? '---\n' +
232239
`> **${streamData.metadata.model}** ${streamData.metadata.isWebSearchEnabled ? '(:globe_with_meridians: 검색 활성화됨)' : ''}\n` +
233240
`> 입력: ${streamData.metadata.inputToken} 토큰 (${cost.input.toFixed(4)}$)\n` +
234-
`> 캐시: ${streamData.metadata.inputCachedToken} 토큰 (${cost.cachedInput.toFixed(4)}$)\n` +
241+
(streamData.metadata.inputCachedToken > 0
242+
? `> 캐시: ${streamData.metadata.inputCachedToken} 토큰 (${cost.cachedInput.toFixed(4)}$)\n`
243+
: '') +
235244
(streamData.metadata.reasoningToken > 0
236245
? `> 생각: ${streamData.metadata.reasoningToken} 토큰 (${cost.reasoning.toFixed(4)}$)\n`
237246
: '') +
@@ -312,6 +321,7 @@ export class ChatEventHandler {
312321
if (isSame) return
313322

314323
const components = newContents
324+
.filter((content) => content.length > 0)
315325
.map((content) => [
316326
new TextDisplayBuilder().setContent(content).toJSON(),
317327
new SeparatorBuilder()

src/Models.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export interface Model {
1212
description: string
1313
emoji: string
1414
tools: string[]
15+
toolRequired?: boolean
1516
reasoningEffort?: ReasoningEffort
1617
system?: string
1718
cost: {
@@ -28,6 +29,7 @@ export const MODELS: Record<string, Model> = {
2829
label: 'o3 (high)',
2930
description: '생각하는데 더 많은 시간을 투자하여 전문적인 주제에 적합',
3031
emoji: '🤔',
32+
system: 'use [name](url) syntax for citing webpage',
3133
tools: ['web_search_preview'],
3234
cost: {
3335
input: 2,
@@ -44,6 +46,7 @@ export const MODELS: Record<string, Model> = {
4446
emoji: '🔍',
4547
tools: ['web_search_preview'],
4648
reasoningEffort: 'medium',
49+
system: 'use [name](url) syntax for citing webpage',
4750
cost: {
4851
input: 1.1,
4952
cached_input: 0.28,
@@ -57,7 +60,10 @@ export const MODELS: Record<string, Model> = {
5760
description: '웹 검색을 최대한 활용하여 최신 주제에 적합',
5861
emoji: '🌐',
5962
tools: ['web_search_preview'],
60-
system: 'utilize web search on every response',
63+
toolRequired: true,
64+
system:
65+
'utilize web search on every response\n' +
66+
'use [name](url) syntax for citing webpage',
6167
cost: {
6268
input: 2,
6369
cached_input: 0.5,

src/OpenAIClient.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ export class OpenAIClient {
2222

2323
private static readonly OPENAI_DEFAULT_PROMPT =
2424
process.env.OPENAI_DEFAULT_PROMPT ??
25-
'respond in discord-flavored markdown format. (for example, you CAN NOT use table and 4~6 level heading but you can use 1~3 level heading with #)\n' +
25+
'respond in discord-flavored markdown format.\n' +
26+
'you CAN NOT use 4~6 level heading but you can use 1~3 level heading with #\n' +
27+
'you CAN NOT use table syntax for markdown\n' +
2628
'also you CAN NOT use bold, italic, underline etc in code block and code span\n' +
2729
'DO NOT use latex syntax, use unicode characters for math equation. use code block(```...```) and code span(`...`)\n' +
2830
'DO NOT append spaces before code block start and end\n' +
@@ -47,7 +49,6 @@ export class OpenAIClient {
4749
model: model.id,
4850
tools: model.tools.map((v) => ({ type: v })) as Tool[],
4951

50-
tool_choice: model.tools.length > 0 ? 'required' : undefined,
5152
reasoning:
5253
model.reasoningEffort !== undefined
5354
? { effort: model.reasoningEffort, summary: 'detailed' }
@@ -58,6 +59,7 @@ export class OpenAIClient {
5859
...chats.map((v) => v.convertToOpenAIResponse())
5960
],
6061

62+
tool_choice: model.toolRequired === true ? 'required' : 'auto',
6163
truncation: 'auto',
6264

6365
user: userIdent.toString()

0 commit comments

Comments
 (0)