比如说,您可以使用 LangChain on Vertex AI 创建一个小型应用来返回指定日期两种货币之间的汇率。以下步骤演示了如何创建此应用:
准备工作
在运行本教程之前,请确保按照设置环境中的步骤设置您的环境。
第 1 步:定义和配置模型
请按照以下步骤定义和配置模型:
如需创建应用,您需要定义要使用的模型。如需了解详情,请参阅“模型版本和生命周期”。运行以下命令以使用 Gemini 1.0 Pro Vision 多模态模型。
model = "gemini-1.0-pro"
(可选)您可以配置模型的安全设置。如需详细了解可用于在 Gemini 中配置安全设置的选项,请参阅配置安全属性。
以下示例展示了如何配置安全设置:
from langchain_google_vertexai import HarmBlockThreshold, HarmCategory safety_settings = { HarmCategory.HARM_CATEGORY_UNSPECIFIED: HarmBlockThreshold.BLOCK_NONE, HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_ONLY_HIGH, HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE, }
(可选)您可以指定以下模型参数。
- 温度
- 输出词元数上限
- TopP
- TopK
- 安全设置(您必须首先按照上一步创建安全设置)。
如需详细了解 Gemini 中可用于模型参数设置的选项,请参阅设置模型参数。以下示例展示了如何指定模型参数:
model_kwargs = {
# temperature (float): The sampling temperature controls the degree of
# randomness in token selection.
"temperature": 0.28,
# max_output_tokens (int): The token limit determines the maximum amount of
# text output from one prompt.
"max_output_tokens": 1000,
# top_p (float): Tokens are selected from most probable to least until
# the sum of their probabilities equals the top-p value.
"top_p": 0.95,
# top_k (int): The next token is selected from among the top-k most
# probable tokens.
"top_k": 40,
# safety_settings (Dict[HarmCategory, HarmBlockThreshold]): The safety
# settings to use for generating content.
"safety_settings": safety_settings,
}
第 2 步:定义 Python 函数
定义模型后,下一步是定义模型用于推理的工具。这里的工具可以是 LangChain 工具,也可以是 Python 函数。您还可以将定义的 Python 函数转换为 LangChain 工具。此应用使用函数定义。
定义函数时,请务必添加能完整而清晰地描述函数的参数、函数的用途以及函数返回内容的注释。模型会使用此信息来确定要使用的函数。您还必须在本地测试函数,以确认其是否正常运行。
使用以下代码定义一个返回汇率的函数:
def get_exchange_rate(
currency_from: str = "USD",
currency_to: str = "EUR",
currency_date: str = "latest",
):
"""Retrieves the exchange rate between two currencies on a specified date.
Uses the Frankfurter API (https://api.frankfurter.app/) to obtain
exchange rate data.
Args:
currency_from: The base currency (3-letter currency code).
Defaults to "USD" (US Dollar).
currency_to: The target currency (3-letter currency code).
Defaults to "EUR" (Euro).
currency_date: The date for which to retrieve the exchange rate.
Defaults to "latest" for the most recent exchange rate data.
Can be specified in YYYY-MM-DD format for historical rates.
Returns:
dict: A dictionary containing the exchange rate information.
Example: {"amount": 1.0, "base": "USD", "date": "2023-11-24",
"rates": {"EUR": 0.95534}}
"""
import requests
response = requests.get(
f"https://api.frankfurter.app/{currency_date}",
params={"from": currency_from, "to": currency_to},
)
return response.json()
如需在应用中使用函数之前先对其进行测试,请运行以下命令:
get_exchange_rate(currency_from="USD", currency_to="SEK")
响应应该类似以下内容:
{'amount': 1.0, 'base': 'USD', 'date': '2024-02-22', 'rates': {'SEK': 10.3043}}
第 3 步:使用 LangChain 编排模板
编排框架会将应用代码整理为一个或多个函数,用于指定应用配置参数、应用初始化逻辑和运行时逻辑。
您可以定义自己的 Python 类(请参阅自定义应用模板),也可以使用 Vertex AI SDK for Python 中适用于您的代理的 LangchainAgent
类。
如需使用 LangchainAgent
类,请指定模型、定义的函数和模型参数,以实例化 LangchainAgent 对象:
agent = reasoning_engines.LangchainAgent(
model=model, # Required.
tools=[get_exchange_rate], # Optional.
model_kwargs=model_kwargs, # Optional.
)
第 4 步:测试应用
现在您已经创建了应用,可以开始测试该应用了。您可以通过对应用发起测试查询来测试该应用。运行以下命令,使用美元和瑞典克朗测试应用:
response = agent.query(
input="What is the exchange rate from US dollars to Swedish currency?"
)
响应是一个类似于以下内容的字典:
{"input": "What is the exchange rate from US dollars to Swedish currency?",
# ...
"output": "For 1 US dollar you will get 10.7345 Swedish Krona."}