yydsljj 2025-06-25 15:04 采纳率: 0%
浏览 10

模型不同报TypeError?

问题:为什么我用gpt-3.5-turbo模型可以运行,而使用gpt-4o-mini模型会报类型错误?:
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

img


from fastapi import FastAPI, WebSocket, WebSocketDisconnect
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.agents import create_openai_tools_agent, AgentExecutor, tool
from langchain_core.runnables import RunnablePassthrough
import os

os.environ["OPENAI_API_KEY"] = "hahaha" # 这边不透露自己密钥
os.environ["OPENAI_API_BASE"] = "https://ai-yyds.com/v1"

app = FastAPI()

@tool
def test():
    """Test tool"""
    return "test"

class Master:
    def __init__(self):
        self.chatmodel = ChatOpenAI(model="gpt-4o-mini")  # gpt-3.5-turbo可以

        self.prompt = ChatPromptTemplate.from_messages(
            [
                (
                    "system",
                    "你是一个聊天小助手"
                ),
                (
                    "user",
                    "{input}"
                ),
                MessagesPlaceholder(variable_name='agent_scratchpad'),
            ],
        )

        tools = [test]
        agent = create_openai_tools_agent(
            llm=self.chatmodel,
            tools=tools,
            prompt=self.prompt,
        )

        # 直接创建AgentExecutor
        self.agent_executor = AgentExecutor(
            agent=agent,
            tools=tools,
            verbose=True,
            handle_parsing_errors=True
        )

    def run(self, query):
        # 确保传入正确的输入结构
        result = self.agent_executor.invoke({"input": query})
        return result.get("output", "未能获取结果")

# 定义接口后面紧跟一个函数,默认当访问这个接口时,会运行这个函数
@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.post("/chat")
def chat(query: str):
    master = Master()
    return master.run(query)


if __name__ == '__main__':
    import uvicorn

    uvicorn.run(app, host="127.0.0.1", port=8000)
  • 写回答

6条回答 默认 最新

  • 阿里嘎多学长 2025-06-25 15:04
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    模型不同报TypeError?

    你遇到的问题是使用 GPT-4o-mini 模型时报 TypeError,而使用 GPT-3.5-turbo 模型可以正常运行。这可能是因为 GPT-4o-mini 模型的输出类型不同,导致无法进行加法操作。

    GPT-3.5-turbo 模型的输出类型可能是 float 或 int,而 GPT-4o-mini 模型的输出类型可能是 string 或其他类型。因此,当你尝试使用 GPT-4o-mini 模型的输出结果进行加法操作时,Python 就会报 TypeError。

    解决方法是检查 GPT-4o-mini 模型的输出类型,并将其转换为 float 或 int 类型,以便进行加法操作。

    例如:

    import torch
    from transformers import GPT4oMiniForSequenceClassification
    
    model = GPT4oMiniForSequenceClassification.from_pretrained('gpt-4o-mini')
    
    # 获取模型的输出结果
    output = model(input_ids, attention_mask)
    
    # 将输出结果转换为 float 类型
    output = output.float()
    
    # 现在可以进行加法操作
    result = output + 1
    

    在上面的代码中,我们使用 float() 方法将 GPT-4o-mini 模型的输出结果转换为 float 类型,然后才能进行加法操作。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月25日