OpenGradientToolkit
本筆記本示範如何使用 OpenGradient 工具組建立工具。此工具組讓使用者能夠在 OpenGradient 網路上,根據模型和工作流程建立自訂工具。
設定
請確認您擁有 OpenGradient API 金鑰,才能存取 OpenGradient 網路。如果您已經有 API 金鑰,只需設定環境變數
!export OPENGRADIENT_PRIVATE_KEY="your-api-key"
如果您需要設定新的 API 金鑰,請下載 opengradient SDK 並依照指示初始化新的設定。
!pip install opengradient
!opengradient config init
安裝
此工具組位於 langchain-opengradient
套件中
%pip install -qU langchain-opengradient
例項化
現在我們可以使用先前的 API 金鑰來例項化我們的工具組。
from langchain_opengradient import OpenGradientToolkit
toolkit = OpenGradientToolkit(
# Not required if you have already set the environment variable OPENGRADIENT_PRIVATE_KEY
private_key="your-api-key"
)
建立您自己的工具
OpenGradientToolkit 提供兩種主要方法來建立自訂工具
1. 建立執行 ML 模型的工具
您可以建立利用部署在 OpenGradient 模型中心上的 ML 模型的工具。使用者建立的模型可以透過 OpenGradient SDK 上傳、推論和分享至模型中心。
import opengradient as og
from pydantic import BaseModel, Field
# Example 1: Simple tool with no input schema
def price_data_provider():
"""Function that provides input data to the model."""
return {
"open_high_low_close": [
[2535.79, 2535.79, 2505.37, 2515.36],
[2515.37, 2516.37, 2497.27, 2506.94],
[2506.94, 2515, 2506.35, 2508.77],
[2508.77, 2519, 2507.55, 2518.79],
[2518.79, 2522.1, 2513.79, 2517.92],
[2517.92, 2521.4, 2514.65, 2518.13],
[2518.13, 2525.4, 2517.2, 2522.6],
[2522.59, 2528.81, 2519.49, 2526.12],
[2526.12, 2530, 2524.11, 2529.99],
[2529.99, 2530.66, 2525.29, 2526],
]
}
def format_volatility(inference_result):
"""Function that formats the model output."""
return format(float(inference_result.model_output["Y"].item()), ".3%")
# Create the tool
volatility_tool = toolkit.create_run_model_tool(
model_cid="QmRhcpDXfYCKsimTmJYrAVM4Bbvck59Zb2onj3MHv9Kw5N",
tool_name="eth_volatility",
model_input_provider=price_data_provider,
model_output_formatter=format_volatility,
tool_description="Generates volatility measurement for ETH/USDT trading pair",
inference_mode=og.InferenceMode.VANILLA,
)
# Example 2: Tool with input schema from the agent
class TokenInputSchema(BaseModel):
token: str = Field(description="Token name (ethereum or bitcoin)")
def token_data_provider(**inputs):
"""Dynamic function that changes behavior based on agent input."""
token = inputs.get("token")
if token == "bitcoin":
return {"price_series": [100001.1, 100013.2, 100149.2, 99998.1]}
else: # ethereum
return {"price_series": [2010.1, 2012.3, 2020.1, 2019.2]}
# Create the tool with schema
token_tool = toolkit.create_run_model_tool(
model_cid="QmZdSfHWGJyzBiB2K98egzu3MypPcv4R1ASypUxwZ1MFUG",
tool_name="token_volatility",
model_input_provider=token_data_provider,
model_output_formatter=lambda x: format(float(x.model_output["std"].item()), ".3%"),
tool_input_schema=TokenInputSchema,
tool_description="Measures return volatility for a specified token",
)
# Add tools to the toolkit
toolkit.add_tool(volatility_tool)
toolkit.add_tool(token_tool)
2. 建立讀取工作流程結果的工具
讀取工作流程是排定的推論,會定期執行儲存在智慧合約上的模型,並搭配即時 Oracle 資料。如需更多資訊,請參閱此處。
您可以建立從工作流程智慧合約讀取結果的工具
# Create a tool to read from a workflow
forecast_tool = toolkit.create_read_workflow_tool(
workflow_contract_address="0x58826c6dc9A608238d9d57a65bDd50EcaE27FE99",
tool_name="ETH_Price_Forecast",
tool_description="Reads latest forecast for ETH price from deployed workflow",
output_formatter=lambda x: f"Price change forecast: {format(float(x.numbers['regression_output'].item()), '.2%')}",
)
# Add the tool to the toolkit
toolkit.add_tool(forecast_tool)
工具
使用內建的 get_tools()
方法來檢視 OpenGradient 工具組中可用工具的清單。
tools = toolkit.get_tools()
# View tools
for tool in tools:
print(tool)
在代理程式中使用
以下說明如何在 LangChain 代理程式中使用您的 OpenGradient 工具
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
# Initialize LLM
llm = ChatOpenAI(model="gpt-4o")
# Create tools from the toolkit
tools = toolkit.get_tools()
# Create agent
agent_executor = create_react_agent(llm, tools)
# Example query for the agent
example_query = "What's the current volatility of ETH?"
# Execute the agent
events = agent_executor.stream(
{"messages": [("user", example_query)]},
stream_mode="values",
)
for event in events:
event["messages"][-1].pretty_print()
API 參考:ChatOpenAI | create_react_agent
以下是將所有內容放在一起的範例輸出
================================ Human Message =================================
What's the current volatility of ETH?
================================== Ai Message ==================================
Tool Calls:
eth_volatility (chatcmpl-tool-d66ab9ee8f2c40e5a2634d90c7aeb17d)
Call ID: chatcmpl-tool-d66ab9ee8f2c40e5a2634d90c7aeb17d
Args:
================================= Tool Message =================================
Name: eth_volatility
0.038%
================================== Ai Message ==================================
The current volatility of the ETH/USDT trading pair is 0.038%.
API 參考
請參閱 Github 頁面 以取得更多詳細資訊。