올라마+랑체인으로 로컬 에이전트 구현하기

AI 실습 튜토리얼5개월 전에 게시 됨 AI 공유 서클
1.8K 00

개요

ReAct(추론과 행동)는 추론과 행동을 결합하여 복잡한 작업에서 인텔리전스의 성능을 향상시키는 프레임워크입니다. 이 프레임워크는 논리적 추론과 실제 행동을 긴밀하게 통합하여 인텔리전스가 역동적인 환경에서 보다 효과적으로 작업을 수행할 수 있도록 지원합니다.

使用 Ollama+LangChain 实现本地 Agent

출처:ReAct: 대규모 언어 모델에서 함께 작동하는 추론과 행동

이 문서에서는 ReAct 프레임워크는 다음과 같습니다. Ollama 로컬 에이전트(에이전트)는 Ollama에서 구현됩니다. Ollama의 강력한 성능과 ReAct의 유연성을 결합하여 사용자는 로컬 환경에서 효율적인 대화형 에이전트를 만들 수 있습니다. 이 구현은 복잡한 작업을 처리할 수 있고, 다양한 상호작용 모드를 지원하며, 높은 실시간 성능이 필요한 로컬 애플리케이션을 위한 작업 자동화 및 사용자 경험을 최적화합니다.

참고: 이 문서에는 핵심 코드 스니펫과 자세한 설명이 포함되어 있습니다. 전체 코드는 다음 링크에서 확인할 수 있습니다. 노트북 .

 

1. 종속성 가져오기

from langchain_core.tools import tool  
from langchain.pydantic_v1 import BaseModel, Field
from langchain_core.tools import render_text_description
from langchain.agents import AgentExecutor, create_react_agent
from langchain import hub
from langchain_community.chat_models import ChatOllama

 

2. 상담원 도구 초기화하기

정의 SearchInput 클래스 상속 BaseModel입력 데이터의 모드를 정의하는 데 사용됩니다.

@tool(args_schema=SearchInput) 도구 데코레이터로 꾸미기 weather_forecast 함수를 호출하고 입력 모드를 SearchInput.

class SearchInput(BaseModel):
location: str = Field(description="location to search for")  # 定义一个 Pydantic 模型,用于描述输入模式,并提供描述信息
@tool(args_schema=SearchInput)
def weather_forecast(location: str):
"""天气预报工具。"""
print(f"Weather for {location}")  # 打印要预报天气的位置
return f"A dummy forecast for {location}"  # 返回给定位置的虚拟天气预报

 

3. 로컬 운영

이 예제에서는 gemma:2b 모델에 따라 출력은 모델 유형에 따라 매우 다를 수 있습니다(무작위성 증가).

llm = ChatOllama(model="gemma:2b")  # 初始化 ChatOllama 模型,使用 "gemma:2b"
tools = [weather_forecast]  # 使用 weather_forecast 工具
prompt = hub.pull("hwchase17/react-json")  # 从 hub 拉取特定提示
prompt = prompt.partial(
tools=render_text_description(tools),  # 为提示呈现工具的文本描述
tool_names=", ".join([t.name for t in tools]),  # 将工具名称连接成一个以逗号分隔的字符串
)
agent = create_react_agent(llm, tools, prompt)  # 使用 llm、工具和自定义提示创建代理
agent_executor = AgentExecutor(agent=agent, tools=tools, handle_parsing_errors=True, verbose=False, format="json")  # 使用指定参数初始化 AgentExecutor
print(agent_executor.invoke({"input":"What is the weather in Paris?"}))  # 使用测试输入调用代理并打印结果

 

대화 기록 사용하기

대화 내용을 사용할 때는 대화 기록에서 react-chat 프롬프트 템플릿. 호출 시점에 chat_history.

# 拉去特定提示,注意此处使用的是 react-chat
prompt = hub.pull("hwchase17/react-chat")
# 构建 ReAct agent
agent_history = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent_history, tools=tools, verbose=False)
agent_executor.invoke(
{
"input": "what's my name? Only use a tool if needed, otherwise respond with Final Answer",
"chat_history": "Human: Hi! My name is Bob\nAI: Hello Bob! Nice to meet you",
}
)

 

참고 문헌

https://react-lm.github.io/

https://python.langchain.com/v0.1/docs/modules/agents/agent_types/react/

© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...