我正在研究在Python中集成LangChainAzureOpenAI,并遇到了一些问题.我最近从一个废弃的方法更新到了一个新的类实现,但现在我遇到了一些我不完全理解的错误.下面是我代码的相关部分:

from langchain_openai import AzureOpenAI as LCAzureOpenAI
# from langchain.llms import AzureOpenAI <-- Deprecated

# Create client accessing LangChain's class
client = LCAzureOpenAI(
    openai_api_version=api_version,
    azure_deployment=deployment_name,
    azure_endpoint=azure_endpoint,
    temperature=TEMPERATURE,
    max_tokens=MAX_TOKENS,
    model=model
    #,model_kwargs={'azure_openai_api_key': api_key}
)

# Attempt to send a chat message
client.chat("Hi")

这会导致以下错误:

AttributeError: 'AzureOpenAI' object has no attribute 'chat'

当我用client.invoke("Hi")替换client.chat("Hi")时,我会得到一个不同的错误:

BadRequestError: Error code: 400 - {'error': {'code': 'OperationNotSupported', 'message': 'The completion operation does not work with the specified model, gpt-4. Please choose different model and try again. You can learn more about which models can be used with each operation here: https://go.microsoft.com/fwlink/?linkid=2197993.'}}

如何解决这些错误?

对于这些错误以及如何解决它们的任何指导或见解,我们将不胜感激!

推荐答案

我通过引用LangChain GitHub存储库上的问题线程成功解决了我面临的问题:LangChain GitHub Issue #3137

关键的要点是使用AzureChatOpenAI类而不是AzureOpenAI类.以下是我的代码更新后的可用片段:

# Create client accessing LangChain's specialized chat class
client = AzureChatOpenAI(
    openai_api_version=api_version,
    azure_deployment=deployment_name,
    azure_endpoint=azure_endpoint,
    temperature=TEMPERATURE,
    max_tokens=MAX_TOKENS,
    model=model
    # Optional: model_kwargs={'azure_openai_api_key': api_key}
)

# Now you can use the invoke method for chat-like interactions
response = client.invoke("Hi")
print(response)

此更改通过使用支持聊天交互的调用方法的正确类来解决AttributeError个问题.

我希望这对其他面临类似问题的人有所帮助!

Python相关问答推荐

Python上的Instagram API:缺少client_id参数"

需要计算60,000个坐标之间的距离

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

将pandas Dataframe转换为3D numpy矩阵

Python中绕y轴曲线的旋转

Pandas—合并数据帧,在公共列上保留非空值,在另一列上保留平均值

Pre—Commit MyPy无法禁用非错误消息

SQLAlchemy Like ALL ORM analog

如何使用scipy的curve_fit与约束,其中拟合的曲线总是在观测值之下?

如何启动下载并在不击中磁盘的情况下呈现响应?

如何更改groupby作用域以找到满足掩码条件的第一个值?

如何检测鼠标/键盘的空闲时间,而不是其他输入设备?

如何将数据帧中的timedelta转换为datetime

比Pandas 更好的 Select

将一个双框爆炸到另一个双框的范围内

在用于Python的Bokeh包中设置按钮的样式

递归函数修饰器

修改.pdb文件中的值并另存为新的

设置索引值每隔17行左右更改的索引

函数()参数';代码';必须是代码而不是字符串