Spring AI에 대한 조기 액세스, 5분 안에 Java AI 애플리케이션 개발 시작

저자 : 류준

Spring AI는 Java AI 애플리케이션 개발을 단순화하고 Java 개발자가 Spring을 사용하여 일반 애플리케이션을 개발하는 것처럼 AI 애플리케이션을 개발할 수 있도록 하는 것을 목표로 하는 Spring의 공식 커뮤니티 프로젝트입니다.

Spring Cloud Alibaba AI는 Spring AI를 기반으로 하며, 이를 기반으로 Alibaba Cloud Tongyi 시리즈 대형 모델의 포괄적인 적용을 제공하므로 사용자는 Tongyi 대형 모델을 기반으로 하는 Java AI 애플리케이션을 5분 안에 개발할 수 있습니다.

Spring AI x Tongyi Qianwen 데모가 sca.aliyun.com 에 출시되었습니다. 

스프링 AI 소개

Spring AI 공식 웹사이트에 따르면 이 프로젝트는 LangChain 및 LlamaIndex와 같은 유명한 Python 프로젝트에서 영감을 얻었지만 Spring AI는 이러한 프로젝트의 직접적인 복사본이 아닙니다. Spring AI는 차세대 Generative AI 애플리케이션이 Python 개발자에게 제공될 뿐만 아니라 많은 프로그래밍 언어에서도 널리 사용될 것이라고 믿습니다.

기본적으로 Spring AI는 Java AI 애플리케이션 개발을 위한 기반으로 추상화를 제공하여 다음 기능을 제공합니다.

  • 업계에서 가장 주류인 대형 모델 서비스를 포함하여 여러 대형 모델 서비스 도킹 기능을 제공합니다.
  • 유연한 프롬프트 템플릿 및 모델 출력 구문 분석 출력 구문 분석 기능을 지원합니다.
  • 대화, Vincentian 그림, Vincentian 음성 등과 같은 다중 모드 생성 AI 기능을 지원합니다.
  • 다양한 모델 서비스 및 임베딩 서비스에 액세스할 수 있는 공통적이고 이식 가능한 API를 제공하고 동기식 및 스트리밍 호출을 지원하며 특정 모델의 사용자 정의 매개변수 전달도 지원합니다.
  • DocumentLoader, TextSpillter, EmobeddingClient, VectorStore 등을 포함하여 RAG 기능을 지원하는 기본 구성 요소입니다.
  • AI Spring Boot Starter를 지원하여 구성 자동 조립을 실현합니다.

Spring Cloud Alibaba AI 소개

Spring Cloud Alibaba AI는 현재 Spring AI 0.8.1 [ 1] 버전 API를 기반으로 하는 Tongyi 시리즈 대형 모델에 대한 액세스를 완료했습니다 . Tongyi Access는 Alibaba Cloud Lingji 모델 서비스 [ 2] 를 기반으로 합니다 . Lingji 모델 서비스는 "Model-as-a-Service(MaaS)" 개념을 기반으로 AI의 다양한 분야의 모델에 중점을 두고 있습니다. 표준화된 API를 통한 모델 추론, 모델 미세 조정 및 교육을 포함한 서비스입니다.

최신 버전에서 Spring Cloud Alibaba AI는 주로 대화, Vincentian 그림, Vincentian 연설 등을 포함한 여러 공통 생성 모델의 적용을 완료했습니다. 개발자는 Spring Cloud Alibaba AI를 사용하여 일반적인 의미 기반 채팅, 그림 또는 For speech를 개발할 수 있습니다. AI 애플리케이션 생성을 위해 프레임워크는 OutParser, Prompt Template 및 Stuff와 같은 실용적인 기능도 제공합니다.

다음은 현재 공식적으로 제공되는 Spring Cloud Alibaba AI 애플리케이션 개발 예시로, sca.aliyun.com 을 방문하시면 보실 수 있습니다  .

  • 채팅 대화 애플리케이션
  • 빈센트 다이어그램 애플리케이션
  • 빈센트 보이스 애플리케이션
  • 모델 출력 구문 분석 OutputParser(문자열에서 자동 POJO로의 매핑 구현)
  • 프롬프트 템플릿 사용
  • AI 모델이 외부 데이터에 액세스하도록 허용(Prompt Stuff)

최초의 Spring AI 애플리케이션 개발을 경험해보세요

이 프로젝트에서는 spring-cloud-starter-alibaba-ai를 사용하여 온라인 채팅 AI 애플리케이션을 완성하는 방법을 보여줍니다. Tongyi Qianwen에서 제공하는 기본 모델 서비스가 사용됩니다. 전체 샘플 소스 코드는 여기 [ 3] 에서 볼 수 있습니다 .

채팅 대화 애플리케이션 개발

  1. 2023.0.1.0 버전의 Spring Cloud Alibaba 종속성을 pom.xml 프로젝트에 추가합니다.
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-alibaba-dependencies</artifactId>
      <version>2023.0.1.0</version>
      <type>pom</type>
      <scope>import</scope>
     </dependency>
   </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-ai</artifactId>
  </dependency>
</dependencies>
  1. application.yml 구성 파일에 다음 구성을 추가합니다.
spring:
  cloud:
    ai:
      tongyi:
        chat:
          options:
            # Replace the following key with a valid API-KEY.
            api-key: sk-a3d73b1709bf4a178c28ed7c8b3b5axx
  1. 채팅 서비스 구현 클래스를 작성하면 Spring AI가 자동으로 ChatClient 및 StreamingChatClient를 주입합니다. ChatClient는 기본 일반 모델의 상호 작용 세부 정보를 보호합니다.
@Service
public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {

  private final ChatClient chatClient;

  private final StreamingChatClient streamingChatClient;

  @Autowired
  public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {
    this.chatClient = chatClient;
    this.streamingChatClient = streamingChatClient;
  }
}
  1. 특정 채팅 로직 구현 제공
@Service
public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {

  // ......

  @Override
  public String completion(String message) {

    Prompt prompt = new Prompt(new UserMessage(message));

    return chatClient.call(prompt).getResult().getOutput().getContent();
  }

  @Override
  public Map<String, String> streamCompletion(String message) {

    StringBuilder fullContent = new StringBuilder();

    streamingChatClient.stream(new Prompt(message))
        .flatMap(chatResponse -> Flux.fromIterable(chatResponse.getResults()))
        .map(content -> content.getOutput().getContent())
        .doOnNext(fullContent::append)
        .last()
        .map(lastContent -> Map.of(message, fullContent.toString()))
        .block();

    log.info(fullContent.toString());

    return Map.of(message, fullContent.toString());
  }

}
  1. Spring 엔트리 클래스 작성 및 애플리케이션 시작
@SpringBootApplication
public class TongYiApplication {
  public static void main(String[] args) {
    SpringApplication.run(TongYiApplication.class);
  }
}

이제 가장 간단한 채팅 AI 애플리케이션 개발이 완료되었습니다. 이는 일반적인 Spring Boot 애플리케이션 개발 단계와 완전히 동일합니다!

적용 효과 확인

애플리케이션을 시작한 후 다음 두 가지 방법으로 애플리케이션 효과를 확인할 수 있습니다.

방법 1

브라우저 주소 표시줄에 http://localhost:8080/ai/example을 입력합니다.

다음 응답을 반환합니다.

{
    "Tell me a joke": "Sure, here's a classic one for you:\n\nWhy was the math book sad?\n\nBecause it had too many problems.\n\nI hope that made you smile! If you're looking for more, just let me know."
}

방법 2

resources/static 디렉터리를 입력하고, 브라우저를 사용하여 index.html 파일을 열고, 질문을 입력하고, 출력 응답을 받으세요(api-key가 유효한지 확인하세요).

Tongyi API-KEY 신청

예제에서 Tongyi 대형 모델에 정상적으로 액세스하려면  Alibaba Cloud에서 DashScope Lingji 모델 서비스를 활성화하고 유효한 API-KEY를 신청한 후 이를 애플리케이션 구성 파일로 업데이트해야 합니다. 구체적인 작업 단계는 다음 문서를 참조하세요.

https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key

향후 계획

Spring Cloud Alibaba AI의 현재 버전은 주로 대화, Vincentian 그래프, Vincentian 음성 등을 포함한 여러 공통 생성 모델의 적용을 완료합니다. 다음 버전에서는 VectorStore, Embedding 및 ETL Pipeline과 같은 더 많은 적응을 계속해서 완료하고 RAG와 같은 더 많은 AI 애플리케이션 개발 시나리오를 단순화할 것입니다.

최신 개발 상황을 계속해서 https://sca.aliyun.com 에 주목하시기 바랍니다 . DingTalk를 통해 아래 QR 코드를 스캔하여 커뮤니티 DingTalk 그룹에 가입하실 수도 있습니다. (그룹번호 : 64485010179 )

관련된 링크들:

[1] 스프링 AI 0.8.1

https://docs.spring.io/spring-ai/reference/0.8-SNAPSHOT/index.html

[2] 링지 모델 서비스

https://help.aliyun.com/zh/dashscope/

[3] 전체 샘플 소스 코드

https://github.com/alibaba/spring-cloud-alibaba/tree/2023.x/spring-cloud-alibaba-examples/spring-cloud-ai-example/src/main/java/com/alibaba/cloud/ ai/example/tongyi/service/impl/helloworld

오픈 소스 산업용 소프트웨어를 포기하기로 결정했습니다 . 주요 이벤트 - OGG 1.0 출시, Huawei가 모든 소스 코드를 제공했습니다. Google Python Foundation 팀이 "코드 똥산"에 의해 해고되었습니다 . ". Fedora Linux 40이 정식 출시되었습니다. 유명 게임 회사가 출시했습니다. 새로운 규정: 직원의 결혼 선물은 100,000위안을 초과할 수 없습니다. China Unicom은 세계 최초로 오픈 소스 모델의 Llama3 8B 중국어 버전을 출시했습니다. Pinduoduo는 보상금을 선고 받았습니다 . 불공정 경쟁에 500만 위안 국내 클라우드 입력 방식 - 화웨이만 클라우드 데이터 업로드 보안 문제 없음
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/3874284/blog/11063462