Chainlit开发LLM聊天程序遇端口占用错误求助
问题解决:Chainlit运行报错及代码修正
一、端口占用错误解决
报错Errno 10048是因为8000端口被其他进程占用,Chainlit默认使用该端口启动服务,解决方式二选一:
- 方式1:关闭占用端口的进程
- Windows:打开命令提示符,执行以下命令:
netstat -ano | findstr :8000 taskkill /PID <查到的PID号> /F - macOS/Linux:打开终端,执行以下命令:
lsof -i :8000 kill -9 <查到的PID号>
- Windows:打开命令提示符,执行以下命令:
- 方式2:指定其他端口启动Chainlit
运行脚本时通过命令行参数指定端口,例如:chainlit run your_script.py --port 8001
二、代码逻辑错误修正
你的代码存在3处关键错误,会导致API调用失败,修正后的完整代码如下:
import chainlit as cl import os import openai # 配置OpenAI API密钥 os.environ['OPENAI_API_KEY'] = 'xxx' openai.api_key = os.getenv('OPENAI_API_KEY') @cl.on_message async def main(message: cl.Message): response = openai.ChatCompletion.create( model='gpt-4', messages=[ # 修正参数名:message → messages {"role": "system", "content": "You are a helpful assistant"}, # 修正角色:assistant → system {"role": "user", "content": message.content} # 修正获取用户输入:message → message.content ], temperature=1, ) await cl.Message(content=response['choices'][0]['message']['content']).send()
修正说明:
- API参数拼写错误:OpenAI ChatCompletion接口要求对话历史参数为
messages,原代码写成message会触发API调用错误。 - 系统提示角色错误:定义助手行为的提示应使用
role="system",而非assistant,否则GPT无法正确识别系统指令。 - 用户输入获取错误:
@cl.on_message装饰的函数接收的参数是cl.Message对象,需通过message.content获取用户输入的文本内容。
内容的提问来源于stack exchange,提问作者Ade Aulya
相关产品推荐
相关产品推荐

