プロジェクト

全般

プロフィール

GenU解析

認証

  • ライブラリ: Amplify
  • APIGatewayはREST APIタイプ、オーソライザーでUserPoolを指定
  • Steamingの部分のみCognito IdentityPoolの認可を使ってLambdaを直接呼び出している
    • hooks/useChatApiのpredictStream関数
    • 呼び出されるのはpredictStream.tsのLambda関数(GenerativeAiUseCasesStack-APIPredictStream~)

RAG関連

【未経験者大歓迎】RAG超入門:AWSが推奨するRAGを体験するハンズオン
[やってみた]Amazon BedrockのKnowledge baseを触ってみた #AWSreInvent
GenU の RAG チャットで精度向上のためのデバッグ方法

Streaming

Azure

LambdaレスポンスストリーミングとAWS-SDKを使ってSlackに進捗バーを表示させる
Public preview: Azure Functions support for HTTP streams in Python
Azure OpenAIの返答をAzure Functionを中継してStream(SSE)したい
【Python】ChatGPT APIでウェブサイト版のように返答を逐次受け取る方法


公式

zustandを初めて使ってみた
軽量なグローバル状態管理ライブラリ「zustand」
Zustand: React向け軽量ステート管理ライブラリ

Tailwind CSSを使用しておしゃれなウェブサイトを素早く開発する方法
【React】ReactアプリにTailwind Cssを導入する手順
出来る限り短く説明する React + Tailwind CSS 入門(忙しい人向け)

tailwind

vite-plugin-svgr

UXデザイナーがClaude3.5で生成したReactアプリをエンジニアが修正し2時間でリリース!両者の作業と感想を語ります


StreamingResponse

【Node.js Axios】streamのレスポンスを扱うときの注意点

OpenAIのChat APIの返答をストリーミングする(Node.js)

axios-vs-fetch

Server-Sent Events を複数パターンで実装して理解を試みる

ChatGPTをぬるぬるにするServer-Sent Eventsの基礎知識

生成 AI による新しい UI/UX

package com.example.demo;

import java.time.Duration;
import java.util.stream.Stream;

import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import reactor.core.publisher.Flux;

@RestController
public class StreamingController {

    @GetMapping(value = "/stream2", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
//  @GetMapping(value = "/stream2", produces = MediaType.TEXT_PLAIN_VALUE)
//  @GetMapping(value = "/stream2", produces = MediaType.APPLICATION_STREAM_JSON_VALUE)
//  @GetMapping(value = "/stream2", produces = MediaType.APPLICATION_NDJSON_VALUE)
    public Flux<String> stream2() {
        System.out.println("stream2");
        //      return Flux.fromStream(Stream.of("Hello", "World", "This", "is", "a", "streaming", "response"))
        return Flux.fromStream(Stream.of("Hello", "World", "This"))
                .delayElements(Duration.ofSeconds(1));
    }
}
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
package com.example.demo;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://localhost:3001")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowedHeaders("*")
                .allowCredentials(true)
                .maxAge(3600);
    }
}