> Java > java지도 시간 > 본문

Java Quarkus Langchain을 사용하는 안정적인 AI 에이전트 - 서비스로서의 부분 AI

Susan Sarandon
풀어 주다: 2024-10-27 08:53:30
원래의
991명이 탐색했습니다.

저자

@herbertbeckman - LinkedIn
@rndtavares - LinkedIn

기사의 일부

  1. Java Quarkus Langchain4j를 사용한 안정적인 AI 에이전트 - 1부 - 서비스형 AI(이 기사)

  2. Java Quarkus Langchain4j prod의 안정적인 AI 에이전트 - 2부 - 메모리(출시 예정)

  3. Java Quarkus Langchain4j를 사용한 안정적인 AI 에이전트 - 3부 - RAG(출시 예정)

  4. Java Quarkus Langchain4j를 사용한 안정적인 AI 에이전트 - 4부 - 가드레일(출시 예정)

소개

신기술이 붐을 일으킬 때마다 기업은 이를 적용하고 비즈니스 관점에서 오랫동안 기다려온 성과를 거두고 싶어합니다. 이는 혁신을 위한 경쟁이자 선두주자의 이점을 위한 싸움입니다. 이러한 경쟁 속에서, 이전에 불안했던 기업들은 일련의 요인으로 인해 포기하게 되는 경우가 많으며, 그 주요 요인 중 하나는 전반적인 시스템의 신뢰성입니다. 인공 지능(AI)은 현재 가장 큰 저항 테스트 중 하나를 겪고 있으며 소프트웨어 개발자로서 우리의 임무는 AI를 의식적이고 올바르게 사용하면 일련의 작업과 프로세스를 수행할 수 있음을 기업에 입증하는 것입니다. . 이 기사에서는 회사가 오랫동안 기다려온 결과를 얻기 위해 생산 중인 신뢰할 수 있는 AI 에이전트에 있어야 하는 기능과 프로세스가 무엇인지, 그리고 시장에서 사용되는 일부 개념을 함께 구현하는 방법을 3개 부분으로 설명합니다. . 또한 이 솔루션의 주의점을 자세히 설명하고, 개발자 여러분께서 최대한 많은 테스트를 수행하고 피드백을 많이 주시면 함께 이해를 더욱 높일 수 있도록 하겠습니다.

구현된 기능

  • 채팅
  • 도구
  • 채팅 메모리
  • 검색 증강 생성(RAG)
  • 가드레일

개념과 정의

조수 vs 부조종사 vs 요원

가장 먼저 궁금해할 수 있는 질문 중 하나는 에이전트가 다른 AI 사용 사례와 어떻게 다른지에 대한 것입니다. 에이전트에는 자동화와 더 연결된 기능이 있는 반면, 다른 에이전트에는 지원 및 시간 최적화를 목표로 하는 활동이 있습니다. 아래에서는 각 사용 사례를 더 자세히 설명합니다.

어시스턴트

어시스턴트는 정보를 확인하고 지식 교환의 좋은 소스가 되어 도움을 주고 많은 시간을 절약해 줍니다. 그들은 가장 다양한 주제에 대해 대략 이야기하며 논쟁의 전제를 분석하기 위해 명확한 추론이 필요할 때 유용할 수 있습니다. 물론, 그들은 그보다 훨씬 더 많은 권한을 가지고 있지만, 저는 여러분이 보조자가 하는 일에 집중하기를 바랍니다. 보조자는 여러분과 대화하고 그게 전부입니다. 그는 오직 이야기하고, 요약하고, 자세히 설명할 수 있습니다. 예를 들면 ChatGPT, Claude AI 및 Gemini가 있습니다.

부조종사

부조종사는 조수보다 조금 더 강력합니다. 실제로 텍스트 변경 및/또는 실시간 수정 제안과 같은 보다 구체적인 작업을 수행할 수 있을 뿐만 아니라 수정 및/또는 컨텍스트 내에서 발생하는 이벤트 중에 팁을 제공할 수도 있습니다. 그러나 이전에 말했듯이 이 작업을 수행하는 것은 상황에 따라 다르며 좋은 제안을 하는 데 필요한 모든 정보가 항상 있는 것은 아닙니다. 또한 명시적인 승인에 따라 달라지므로 사용자에 대한 직접적인 의존성이 생성됩니다. 좋은 예는 Github Copilot, Codium 및 Microsoft Copilot입니다.

자치령 대표

에이전트의 주요 목표는 명확한 목표를 가지고 작업을 수행하는 것입니다. 초점은 자동화에 있습니다. 즉, 실제로 구체적인 작업을 자율적으로 수행합니다. 이 모든 것은 우리가 제공하는 도구를 통해서만 가능합니다. 에이전트는 LLM 자체가 아니라 이 LLM을 조정하는 응용 프로그램입니다. LLM을 결정을 내리는 시스템의 두뇌로 이해하고 LLM을 두뇌 신체의 구성원으로 적용합니다. 손으로 물을 얻을 수 없다면 물 한 컵을 가져갈 생각을 하는 것이 무슨 의미가 있습니까? 귀하의 에이전트는 LLM에게 안전하고 감사 가능하며 가장 중요하게는 신뢰할 수 있는 방식으로 작업을 수행할 수 있는 권한을 부여합니다.

조치를 취하다

기사의 첫 번째 부분에서는 AI 제공자와의 인터페이스 레이어에 불과한 AIService를 프로젝트에 구현합니다. 이 프로젝트에서는 OpenAI의 LLM을 사용하지만 선호하는 공급자를 추가하고 이를 기반으로 종속성을 조정할 수 있습니다.

이제 개념이 잘 정의되었고 여기서 무엇을 할지 알았으니 코딩으로 넘어가겠습니다!

프로젝트 만들기

Quarkus에서 종속성 관리자와 확장을 선택하여 quarkus 프로젝트를 생성하고 코딩을 시작하세요.

프로젝트 종속성

Maven을 프로젝트의 종속성 관리자로 사용하겠습니다. 다음은 우리가 추가한 초기 종속성입니다.

마벰

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-websockets-next</artifactId>
</dependency>

<dependency>
  <groupId>io.quarkiverse.langchain4j</groupId>
  <artifactId>quarkus-langchain4j-core</artifactId>
  <version>0.20.3</version>
</dependency>

<dependency>
  <groupId>io.quarkiverse.langchain4j</groupId>
  <artifactId>quarkus-langchain4j-openai</artifactId>
  <version>0.20.3</version>
</dependency>
로그인 후 복사
로그인 후 복사
로그인 후 복사

프로젝트 구성

src/main/resources/application.properties 파일에 다음 속성을 추가합니다.

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-websockets-next</artifactId>
</dependency>

<dependency>
  <groupId>io.quarkiverse.langchain4j</groupId>
  <artifactId>quarkus-langchain4j-core</artifactId>
  <version>0.20.3</version>
</dependency>

<dependency>
  <groupId>io.quarkiverse.langchain4j</groupId>
  <artifactId>quarkus-langchain4j-openai</artifactId>
  <version>0.20.3</version>
</dependency>
로그인 후 복사
로그인 후 복사
로그인 후 복사

YOUR_OPENAPI_KEY_HERE를 OpenAI 플랫폼에 등록한 키(apiKey)로 바꾸세요.

팁: IDE에서 환경 변수를 생성한 후 quarkus.langchain4j.openai.api-key 속성을 다음과 같이 수정하세요.

quarkus.tls.trust-all=true
quarkus.langchain4j.timeout=60s
quarkus.langchain4j.openai.api-key=YOUR_OPENAI_API_KEY_HERE
로그인 후 복사
로그인 후 복사

AIService 만들기

먼저 에이전트에 "개성"을 부여하는 클래스가 될 AIService를 만들어야 합니다. 이를 위해 src/main/java/ 디렉토리에 다음 코드를 사용하여 Agent라는 클래스를 생성합니다.

quarkus.langchain4j.openai.api-key=${OPEN_API_KEY:NAO_ENCONTREI_A_VAR}
로그인 후 복사

저희 SystemPrompt(@SystemMessage)를 보면 알 수 있듯이 축구 전문 에이전트를 만들었습니다.

채팅 만들기

이제 에이전트를 만들었으므로 에이전트와의 채팅을 처리할 클래스를 만들어야 합니다. 이를 위해 src/main/java/ 디렉토리에 다음 코드를 사용하여 AgentWSEndpoint라는 클래스를 생성합니다.

package <seupacote>;

import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import io.quarkiverse.langchain4j.RegisterAiService;
import jakarta.enterprise.context.ApplicationScoped;

@ApplicationScoped
@RegisterAiService
public interface Agent {

    @SystemMessage("""
            Você é um agente especializado em futebol brasileiro, seu nome é FutAgentBR
            Você sabe responder sobre os principais títulos dos principais times brasileiros e da seleção brasileira
            Sua resposta precisa ser educada, você pode deve responder em Português brasileiro e de forma relevante a pergunta feita

            Quando você não souber a resposta, responda que você não sabe responder nesse momento mas saberá em futuras versões.
            """)
    String chat(@UserMessage String message);
}
로그인 후 복사

이제 quarkus dev UI를 통해 현재 어시스턴트인 에이전트와 대화할 수 있습니다. 다음은 안내할 인쇄물입니다.

Agente de IA confiável em prod com Java   Quarkus   Langchain- Parte  AI as Service

Agente de IA confiável em prod com Java   Quarkus   Langchain- Parte  AI as Service

Agente de IA confiável em prod com Java   Quarkus   Langchain- Parte  AI as Service

Agente de IA confiável em prod com Java   Quarkus   Langchain- Parte  AI as Service

도구 추가(함수 호출)

이제 에이전트와 어시스턴트의 차이점을 결정하는 세부 사항으로 넘어가겠습니다. 에이전트에 작업 및/또는 프로세스를 수행하고 도구(함수 호출)를 추가할 수 있는 가능성을 제공합니다. 이를 코딩하기 전에 매크로 방식으로 도구 호출이 어떻게 작동하는지 보여주는 간단한 그래픽이 있습니다.

Agente de IA confiável em prod com Java   Quarkus   Langchain- Parte  AI as Service
출처 : 표면.ai

이제 도구 호출이 어떻게 작동하는지 알았으니 도구를 사용하여 클래스를 만들어야 합니다. 각 도구에 대해 여러 가지 클래스를 만들 수도 있습니다. 이 예에서는 에이전트가 사용할 수 있는 도구를 그룹화하는 "ToolBox", 즉 도구 상자를 만듭니다. 코드는 다음과 같습니다.

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-websockets-next</artifactId>
</dependency>

<dependency>
  <groupId>io.quarkiverse.langchain4j</groupId>
  <artifactId>quarkus-langchain4j-core</artifactId>
  <version>0.20.3</version>
</dependency>

<dependency>
  <groupId>io.quarkiverse.langchain4j</groupId>
  <artifactId>quarkus-langchain4j-openai</artifactId>
  <version>0.20.3</version>
</dependency>
로그인 후 복사
로그인 후 복사
로그인 후 복사

곧이어 @ToolBox(AgentTools.class) 주석을 통해 사용할 수 있는 도구를 알려주는 주석을 에이전트에 추가했습니다. 다음과 같습니다:

quarkus.tls.trust-all=true
quarkus.langchain4j.timeout=60s
quarkus.langchain4j.openai.api-key=YOUR_OPENAI_API_KEY_HERE
로그인 후 복사
로그인 후 복사

이제 에이전트에게 지금이 몇시인지, 오늘 날짜가 언제인지 물어보고 두 숫자를 더해 제곱근을 계산하도록 요청할 수 있습니다. 이는 여기서 설명하기 위해 사용하는 도구이지만 이를 HTTP 호출, 해싱 함수, SQL 쿼리 등으로 대체할 수 있습니다. 가능성은 무궁무진합니다.

Quarkus DEV UI를 통한 테스트

다음은 도구를 추가한 후 수행된 테스트 중 하나의 스크린샷입니다.

Agente de IA confiável em prod com Java   Quarkus   Langchain- Parte  AI as Service

Agente de IA confiável em prod com Java   Quarkus   Langchain- Parte  AI as Service

보시다시피 각 도구 호출에 대해 LLM이 실제로 실행 권한을 부여한 코드를 호출했음을 보여주는 로그가 있습니다.

다음 단계

이것으로 에이전트 생성 시작이 끝났습니다. 곧 2부에서는 에이전트에 메모리를 추가하고, 3부에서는 RAG(Retrieval-Augmented Generation), 4부에서는 Guardrails에 메모리를 추가할 예정입니다. 즐거우셨기를 바라며 곧 뵙길 바랍니다.

그러나 이제 이 GitHub 저장소에 있는 기사의 코드를 모두 따라가며 볼 수 있습니다.

위 내용은 Java Quarkus Langchain을 사용하는 안정적인 AI 에이전트 - 서비스로서의 부분 AI의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!