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 入門(忙しい人向け)
UXデザイナーがClaude3.5で生成したReactアプリをエンジニアが修正し2時間でリリース!両者の作業と感想を語ります
StreamingResponse¶
【Node.js Axios】streamのレスポンスを扱うときの注意点
OpenAIのChat APIの返答をストリーミングする(Node.js)
Server-Sent Events を複数パターンで実装して理解を試みる
ChatGPTをぬるぬるにするServer-Sent Eventsの基礎知識
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); } }