728x90
반응형

Langchain이 첫 번째 안정 버전인 v0.1을 출시했대요.

Langchain v0.1.0

정말 중요한 릴리스이고, 여러 가지 중요한 변경 사항이 있네요.

최근에 Neo4j GraphAcademy의 Neo4j 및 LLM 기초, 그리고 Python을 사용하여 Neo4j 지원 Chatbot 구축 강의를 업데이트했는데, Langchain v0.1을 사용하고 있어요. 제가 발견한 몇 가지 내용을 공유하고 싶어요.

Langchain v0.1은 이전 버전과 호환되기 때문에 너무 서둘러 업그레이드할 필요는 없다는 점을 알아두는 게 중요해요. 하지만 Langchain 0.1은 다양한 이점을 가진 중요한 변화라서 마이그레이션 계획을 세우는 걸 추천드려요.

GraphAcademy 강좌를 업데이트하기 전에 해당 강좌에서 Langchain 예제를 실행했더니 많은 결과가 더 이상 사용되지 않음 경고 메시지가 뜨더라구요.

LangChainDeprecationWarning: The class `ChatOpenAI` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use langchain_openai.ChatOpenAI instead.

이런 경고는 그냥 무시해도 되긴 하지만, 새로운 걸 배우려고 할 때는 자신감에 영향을 줄 수도 있잖아요.

“잠깐만, 이거 맞는 건가?”

“내가 뭔가 잘못했나?”

그래서 가능한 한 빨리 업그레이드를 진행하게 된 주요 동기였어요.

강좌를 업데이트하면서 발견한 3가지 주요 변경 사항은 다음과 같아요.

구조

Langchain의 내부 구조가 변경되어서 코어가 더 간결해졌어요. 그 결과, LLM 통합 및 커뮤니티 도구가 자체 패키지로 이동했죠.

예를 들어 이전에 OpenAI 및 Neo4j와 함께 Langchain을 사용했다면 필요한 대부분은 langchain, openai 및 neo4j 패키지와 함께 설치되었을 거예요.

pip install langchain openai neo4j

v0.1 이후에는 langchain_openai 및 langchain_community 패키지가 필요해요.

pip install langchain openai neo4j langchain_openai langchain_community

이러한 변경 사항은 이전에 langchain.llms 모듈의 일부였던 OpenAI 클래스와 같은 모듈을 가져오는 방법에도 반영돼요.

from langchain.llms import OpenAI

OpenAI는 이제 langchain_openaiintegration 모듈의 일부랍니다.

from langchain_openai import OpenAI

다른 LLM 통합 및 커뮤니티 모듈도 마찬가지예요. 예를 들어, 이전에 langchain.graphs에 포함되었던 Neo4jGraph 클래스는 다음과 같아요.

from langchain.graphs import Neo4jGraph

Neo4Graph는 이제 langchain_community.graphsmodule에 있어요:

from langchain_community.graphs import Neo4jGraph

패키지에서 모듈을 가져오면 다음과 유사한 새 패키지 설치 방법에 대한 조언과 함께 지원 중단된 경고 메시지가 표시될 거예요.

LangChainDeprecationWarning: Importing chat models from langchain is deprecated. Importing from langchain will no longer be supported as of langchain==0.2.0. Please import from langchain-community instead:

`from langchain_community.chat_models import ChatOpenAI`.

To install langchain-community run `pip install -U langchain-community`.

새로운 패키지 구조는 더 큰 유연성을 제공하고 종속성 관리도 향상시켜요.

호출 중

많은 Langchain 객체(LLM, Chain, Agent 등)는 callable해요. 예를 들어 LLM 객체에 직접 프롬프트를 전달할 수 있죠.

llm = OpenAI(openai_api_key="sk-…")
response = llm("What is Neo4j?")

v0.1에서는 더 이상 사용되지 않는데요.

LangChainDeprecationWarning: The function `__call__` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use invoke instead.

권장되는 접근 방식은 `invoke` 메서드를 사용하는 거예요.

llm = OpenAI(openai_api_key="sk-…")
response = llm.invoke("What is Neo4j?")

`kwargs`를 사용해서 프롬프트 매개변수를 전달하는 것도 더 이상 지원되지 않고, `invoke` 사용으로 표준화되었어요.

예를 들어 프롬프트 매개변수 `fruit`를 체인에 전달하는 경우를 살펴볼까요?

llm = OpenAI(openai_api_key="sk-…")
template = PromptTemplate.from_template(
  """
  Tell me about the following fruit: {fruit}
  """)

llm_chain = LLMChain(
 llm=llm,
 prompt=template
)

response = llm_chain.run(fruit="apple")

이제 매개변수는 `invoke` 메서드를 통해 사전 형태로 전달해야 해요.

response = llm_chain.invoke({"fruit": "apple"})

Langchain 전체에 동일한 패턴이 사용되어서 API를 단순화하고 표준화해서 통합 및 작업을 더 쉽게 만들어준다니, 정말 좋죠?

Agent 관련 변경 사항

제 생각에는 Agent를 생성하고 사용하는 과정이 Langchain v0.1에서 가장 중요한 변화 같아요.

이전에는 initialize_agent 함수를 사용해서 Agent를 초기화했었죠:

agent = initialize_agent(
  tools, 
  llm, 
  memory=memory, 
  agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,
)

하지만 이제 initialize_agent 함수는 더 이상 사용되지 않아요:

The function `initialize_agent` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use Use new agent constructor methods like create_react_agent, create_json_agent, create_structured_chat_agent, etc. instead.

Langchain v0.1에는 더 많은 Agent 유형이 도입되었고, `create_react_agent`와 같은 특정 함수를 사용해서 생성해야 해요.

새로운 Agent 유형별 함수를 사용하는 것 외에도 Agent 생성을 위한 3단계 프로세스를 따라야 한답니다.

  1. Agent `Prompt` 만들기
  2. Agent 만들기
  3. Agent 실행기 만들기
agent_prompt = hub.pull("hwchase17/react-chat")
agent = create_react_agent(llm, tools, agent_prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, memory=memory)

주목할 만한 주요 변경 사항은 이제 Agent에게 `Prompt`가 필요하다는 점이에요. 이걸 통해 더 효과적으로 제어할 수 있고, LLM에게 도구 선택 및 처리 방법을 지시할 수 있게 되었죠.

사용자 정의 `Prompt`를 생성할 수도 있지만, 이 예에서는 코드가 기존 `Prompt`를 가져오고 있어요. hwchase17/react-chat에서 LangSmith Hub를 통해 가져올 수 있어요.

Agent에게 간결한 `Prompt`를 제공한 결과, LLM이 올바른 도구를 선택하려면 Agent에게 더 나은 도구 이름과 설명을 제공해야 한다는 사실도 알게 되었어요.

Langchain 0.1은 정말 중요한 업데이트네요! GraphAcademy 과정에서 Neo4j와 함께 Langchain 및 LLM을 사용하는 방법에 대해 더 자세히 배울 수 있어요.

  • Neo4j 및 LLM 기초 — 이 과정에서는 Neo4j를 Generative AI 모델과 통합하는 방법을 배우게 될 거예요. Langchain, 그리고 왜 Graph Database가 LLM(Large Language Model) 기반을 위한 안정적인 옵션인지도요.
  • Python을 사용하여 Neo4j 지원 Chatbot 구축 — 이 실습 과정에서는 Neo4j 및 LLM 기초 과정에서 얻은 지식을 사용해서 Neo4j Database가 지원하는 영화 추천 챗봇을 만들 수 있어요.

Neo4j GraphAcademy는 무엇인가요?

At Neo4j GraphAcademy에서는 완전 무료로 다양한 과정을 제공하고 있어요. Neo4j 기초부터 Neo4j에 연결되는 소프트웨어를 개발하는 방법까지 배울 수 있답니다.


  • Langchain

에이치시스템즈LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.

👉 에이치시스템즈 홈페이지

728x90
반응형

+ Recent posts