React调用ChatGPT API返回不完整响应问题求助
问题描述
在React中实现Web应用聊天功能时,调用ChatGPT接口请求列表类内容(例如询问全球Top3最富裕国家),仅能获取到部分响应(如只返回“the top 3 richest countries are:”),调整max_tokens参数后问题仍未解决。相关请求代码如下:
export async function generateChatResponse(prompt: string): Promise<string> { try { console.log(prompt) const response = await axios.post( API_BASE_URL, { messages: [ { role: 'user', content: prompt } ], model:'gpt-3.5-turbo', max_tokens: 150, temperature: 0.7, stop: '\n', }, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${API_KEY}`, }, } ); console.log(response) return response.data.choices[0].message.content.trim(); } catch (error) { console.error('Error generating chat response:', error); return 'Oops! An error occurred while processing your request.'; } }
问题根源
代码中设置了stop: '\n'参数,该参数会让ChatGPT模型在生成内容时遇到换行符就停止输出。而列表类内容的常规格式是写完引导语后换行列出条目,因此模型刚输出完开头就触发了停止条件,无法生成完整的列表内容。
解决方案
- 直接移除
stop参数:如果不需要指定特殊的停止触发条件,删除该参数即可让模型正常生成完整内容。 - 按需设置合理的停止词:如果确实需要限制输出,将
stop设置为符合业务需求的特定词汇或符号,避免使用会打断正常输出的换行符。
修改后的核心请求配置示例:
{ messages: [ { role: 'user', content: prompt } ], model:'gpt-3.5-turbo', max_tokens: 150, temperature: 0.7, // 移除stop参数,或替换为合适的停止词 }
内容的提问来源于stack exchange,提问作者La Bola Al Riel
相关产品推荐
相关产品推荐

