Skip to main content
通过无监督学习对 LLM 本身进行微调以记忆信息。 此工具需要支持微调的 LLM。目前仅支持 langchain.llms import GradientLLM

导入

import os

from langchain.agents import create_agent, load_tools
from langchain_classic.chains import LLMChain
from langchain.memory import ConversationBufferMemory
from langchain_community.llms import GradientLLM

设置环境 API 密钥

请确保从 Gradient AI 获取您的 API 密钥。您将获得 10 美元的免费额度,用于测试和微调不同的模型。
from getpass import getpass

if not os.environ.get("GRADIENT_ACCESS_TOKEN", None):
    # Access token under https://auth.gradient.ai/select-workspace
    os.environ["GRADIENT_ACCESS_TOKEN"] = getpass("gradient.ai access token:")
if not os.environ.get("GRADIENT_WORKSPACE_ID", None):
    # `ID` listed in `$ gradient workspace list`
    # also displayed after login at at https://auth.gradient.ai/select-workspace
    os.environ["GRADIENT_WORKSPACE_ID"] = getpass("gradient.ai workspace id:")
if not os.environ.get("GRADIENT_MODEL_ADAPTER_ID", None):
    # `ID` listed in `$ gradient model list --workspace-id "$GRADIENT_WORKSPACE_ID"`
    os.environ["GRADIENT_MODEL_ID"] = getpass("gradient.ai model id:")
可选:验证您的环境变量 GRADIENT_ACCESS_TOKENGRADIENT_WORKSPACE_ID 以获取当前已部署的模型。

创建 GradientLLM 实例

您可以指定不同的参数,如模型名称、最大生成 token 数、temperature 等。
llm = GradientLLM(
    model_id=os.environ["GRADIENT_MODEL_ID"],
    # # optional: set new credentials, they default to environment variables
    # gradient_workspace_id=os.environ["GRADIENT_WORKSPACE_ID"],
    # gradient_access_token=os.environ["GRADIENT_ACCESS_TOKEN"],
)

加载工具

tools = load_tools(["memorize"], llm=llm)

初始化智能体

agent = create_agent(
    model=llm,
    tools=tools,
    verbose=True,
)

运行智能体

让智能体记忆一段文本。
agent.invoke(
    {
        "input": "Please remember the fact in detail:\nWith astonishing dexterity, Zara Tubikova set a world record by solving a 4x4 Rubik's Cube variation blindfolded in under 20 seconds, employing only their feet."
    }
)
> Entering new AgentExecutor chain...
I should memorize this fact.
Action: Memorize
Action Input: Zara T
Observation: Train complete. Loss: 1.6853971333333335
Thought:I now know the final answer.
Final Answer: Zara Tubikova set a world

> Finished chain.
'Zara Tubikova set a world'