You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.8.3下用OpenAI开发AI遇'module'不可调用错误求修复

问题修复方案

核心错误修复

你遇到的TypeError: 'module' object is not callable是因为错误地将openai模块当作文件打开函数使用,同时文件路径为空字符串,这两个问题需要优先解决:

1. 替换错误的文件打开调用

将ReplyBrain函数里的:

FileLog = openai("","r")

改成使用Python内置的open()函数,并指定有效的聊天日志文件名,比如:

FileLog = open("chat_log.txt", "r")

同理,后续写入文件的代码里的空文件名也要替换:

FileLog = open("chat_log.txt", "w")

其他潜在问题修复

除了核心错误,代码里还有几个需要调整的地方,避免后续出现异常:

1. 修复API密钥文件路径

Windows系统中,路径里的反斜杠需要转义,或者使用原始字符串,否则\A会被当作转义字符处理:

# 方式1:转义反斜杠
fileopen = open("Data\\Api.txt","r")
# 方式2:使用原始字符串
fileopen = open(r"Data\Api.txt","r")

2. 优化OpenAI调用方式

不需要提前实例化Completion对象,直接调用openai.Completion.create()即可,删除这行:

completion = openai.Completion()

然后将response = completion.create(改成:

response = openai.Completion.create(

3. 修复聊天日志更新逻辑

当前代码每次更新日志时都会基于原始模板,导致历史聊天记录丢失,应该基于当前的chat_log来更新:

# 替换原来的chat_log_template_update
chat_log_update = chat_log + f"\nYou : {question} \nJarvis : {answer}"
# 写入文件时使用更新后的chat_log_update
FileLog = open("chat_log.txt", "w")
FileLog.write(chat_log_update)

4. 处理聊天日志文件不存在的情况

如果首次运行时chat_log.txt不存在,打开文件会报错,需要添加异常处理或者初始化文件:

def ReplyBrain(question, chat_log=None):
    try:
        FileLog = open("chat_log.txt", "r")
        chat_log_template = FileLog.read()
        FileLog.close()
    except FileNotFoundError:
        # 如果文件不存在,初始化一个默认模板
        chat_log_template = "Jarvis: 我是Jarvis,有什么可以帮你的?"

    if chat_log is None:
        chat_log = chat_log_template

    # 后续代码保持不变...

修复后的完整代码示例

# 修复API文件路径
fileopen = open(r"Data\Api.txt","r")
API = fileopen.read()
fileopen.close()

import openai
from dotenv import load_dotenv

# 如果你用.env文件存储密钥,应该先load再设置,否则可以去掉load_dotenv()
load_dotenv()
openai.api_key = API

def ReplyBrain(question, chat_log=None):
    # 处理聊天日志文件不存在的情况
    try:
        FileLog = open("chat_log.txt", "r")
        chat_log_template = FileLog.read()
        FileLog.close()
    except FileNotFoundError:
        chat_log_template = "Jarvis: 我是Jarvis,有什么可以帮你的?"

    if chat_log is None:
        chat_log = chat_log_template

    prompt = f'{chat_log}\nYou : {question}\nJarvis : '
    response = openai.Completion.create(
        model = "text-davinci-002",
        prompt = prompt,
        temperature = 0.5,
        max_tokens = 60,
        top_p = 0.3,
        frequency_penalty = 0.5,
        presence_penalty = 0
    )
    answer = response.choices[0].text.strip()
    # 基于当前聊天记录更新日志
    chat_log_update = chat_log + f"\nYou : {question} \nJarvis : {answer}"
    FileLog = open("chat_log.txt", "w")
    FileLog.write(chat_log_update)
    FileLog.close()
    return answer

while True:
    kk = input("Enter :")
    result = ReplyBrain(kk)
    print(result)

内容的提问来源于stack exchange,提问作者Aryav Verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:30:57