配置提示詞

在使用 FLUX.1-dev 進行繪畫時,建議使用英文提示詞以取得更好的效果,例如:

Prompt: a young artist sitting in front of a canvas, focused on painting, surrounded by colorful paints and brushes, sunlight streaming through the window onto him.

人物肖像生成

API調用

FLUX.1-dev 還提供 API 調用功能,方便開發者將其集成到應用中。API 文檔可以在這里 找到。

import requests

url = "https://api.siliconflow.cn/v1/black-forest-labs/FLUX.1-schnell/text-to-image"

payload = {
    "prompt": "an island near sea, with seagulls, moon shining over the sea, light house, boats in the background, fish flying over the sea",
    "image_size": "1024x1024",
    "batch_size": 1,
    "num_inference_steps": 20,
    "guidance_scale": 7.5
}
headers = {
    "accept": "application/json",
    "content-type": "application/json",
    "Authorization": "Bearer your_api_key"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)

使用Flux和Mono創建響應式流

創建簡單的Flux和Mono

在 Java 中,使用 Flux 和 Mono 可以輕松創建響應式流。使用 Flux.just()Mono.just() 方法,可以從簡單的數據集合中創建流。

Flux.just(1, 2, 3, 4).subscribe(System.out::println);
Mono.just("Hello").subscribe(System.out::println);

從數組創建Flux

Flux.fromArray() 方法可以從數組中創建 Flux 流,適用于已知大小的數據集。

Flux.fromArray(new Integer[]{1, 2, 3, 4}).subscribe(System.out::println);

Flux與Mono的轉換

Flux 和 Mono 可以相互轉換。使用 collectList() 可以將 Flux 轉換為 Mono,反之亦然。

Flux flux = Flux.just(1, 2, 3);
Mono<List> mono = flux.collectList();
mono.subscribe(System.out::println);

從Iterable對象中創建Flux流

使用fromIterable

通過 Flux.fromIterable() 方法,可以從任何實現了 Iterable 接口的對象中創建 Flux 流。這種方法非常靈活,適用于多種數據源。

List list = Arrays.asList(1, 2, 3, 4);
Flux.fromIterable(list).subscribe(System.out::println);

動態添加元素

當使用 Iterable 對象創建 Flux 后,可以動態添加元素到 Iterable 中,Flux 將自動包含這些新元素。

ArrayList list = new ArrayList(Arrays.asList(1, 2, 3));
Flux flux = Flux.fromIterable(list);
list.add(4);
flux.subscribe(System.out::println);

處理空集合

即使 Iterable 對象為空,Flux.fromIterable() 也能創建一個空的 Flux 而不會拋出異常。

List emptyList = Collections.emptyList();
Flux.fromIterable(emptyList).subscribe(System.out::println);

通過Stream和Range生成Flux流

使用fromStream

通過 Java 的 Stream API,可以將數據流轉換為 Flux 流。Flux.fromStream() 是一個簡單而強大的工具。

Flux.fromStream(Stream.of(1, 2, 3, 4)).subscribe(System.out::println);

使用range

Flux.range() 方法可以生成一個整數序列的 Flux 流,適用于需要生成特定范圍數字的場景。

Flux.range(0, 10).subscribe(System.out::println);

結合Stream和Range

可以將 Stream 和 Range 結合起來使用,進一步擴展 Flux 的功能。

Stream stream = Stream.iterate(0, n -> n + 1).limit(10);
Flux.fromStream(stream).subscribe(System.out::println);

處理Flux和Mono中的異常

創建包含異常的流

在開發過程中,處理異常是不可或缺的一部分。可以直接創建一個包含異常的 Flux 或 Mono。

Flux.error(new RuntimeException("Error occurred")).subscribe(System.out::println, System.err::println);
Mono.error(new RuntimeException("Error occurred")).subscribe(System.out::println, System.err::println);

異常捕獲

通過 doOnError() 方法,可以在異常發生時執行特定的操作,比如記錄日志。

Mono.just("start")
    .concatWith(Mono.error(new RuntimeException("Exception")))
    .doOnError(error -> System.out.println("Caught: " + error))
    .subscribe(System.out::println);

使用onErrorResume

當異常發生時,可以通過 onErrorResume() 方法生成一個新的流,作為替代方案。

Flux.just(1, 2, 3)
    .concatWith(Mono.error(new RuntimeException("Error")))
    .onErrorResume(e -> Flux.just(4, 5, 6))
    .subscribe(System.out::println);

合并與過濾流中的元素

合并流

使用 merge() 方法可以將多個 Flux 流合并到一起,合并后的流會按時間順序輸出所有的元素。

Flux.merge(Flux.just(1, 2), Flux.just(3, 4)).subscribe(System.out::println);

過濾元素

filter() 方法用于從 Flux 流中過濾掉不符合條件的元素,只保留滿足條件的元素。

Flux.range(1, 10).filter(i -> i % 2 == 0).subscribe(System.out::println);

使用zipWith合并

zipWith() 方法可以將兩個 Flux 的元素一一配對,并對配對的元素進行處理。

Flux.just(1, 2).zipWith(Flux.just("A", "B"), (num, letter) -> num + letter).subscribe(System.out::println);

控制流背壓與訂閱量管理

背壓機制

在處理響應式流時,背壓機制用于控制數據流速,以避免資源消耗過大。通過 BaseSubscriber 可以自定義背壓策略。

Flux.range(1, 10).subscribe(new BaseSubscriber() {
    @Override
    protected void hookOnSubscribe(Subscription subscription) {
        request(2);
    }

    @Override
    protected void hookOnNext(Integer value) {
        System.out.println(value);
        if (value == 2) {
            cancel();
        }
    }
});

控制訂閱量

subscribe() 方法中,可以指定每次請求的元素數量,從而控制流的消費速率。

Flux.range(1, 100).limitRate(10).subscribe(System.out::println);

自定義Subscriber

通過實現 Subscriber 接口,可以完全掌控數據流的請求和消費邏輯。

Flux.range(1, 10).subscribe(new Subscriber() {
    private Subscription subscription;
    private int count = 0;
    @Override
    public void onSubscribe(Subscription s) {
        this.subscription = s;
        subscription.request(1);
    }

    @Override
    public void onNext(Integer integer) {
        System.out.println(integer);
        if (++count >= 2) {
            subscription.request(1);
            count = 0;
        }
    }

    @Override
    public void onError(Throwable t) {
        t.printStackTrace();
    }

    @Override
    public void onComplete() {
        System.out.println("Done");
    }
});

FAQ

問:如何體驗 FLUX.1-dev AI 繪畫模型的在線功能?

問:在使用 FLUX.1-dev 進行繪畫時,提示詞應該如何配置?

問:如何通過 API 調用 FLUX.1-dev,以便集成到應用中?

import requests

url = "https://api.siliconflow.cn/v1/black-forest-labs/FLUX.1-schnell/text-to-image"

payload = {
    "prompt": "an island near sea, with seagulls, moon shining over the sea, light house, boats in the background, fish flying over the sea",
    "image_size": "1024x1024",
    "batch_size": 1,
    "num_inference_steps": 20,
    "guidance_scale": 7.5
}
headers = {
    "accept": "application/json",
    "content-type": "application/json",
    "Authorization": "Bearer your_api_key"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)

問:如何在 Java 中使用 Flux 和 Mono 創建響應式流?

Flux.just(1, 2, 3, 4).subscribe(System.out::println);
Mono.just("Hello").subscribe(System.out::println);

問:Java 開發者如何處理 Flux 和 Mono 中的異常情況?

Mono.just("start")
    .concatWith(Mono.error(new RuntimeException("Exception")))
    .doOnError(error -> System.out.println("Caught: " + error))
    .subscribe(System.out::println);

通過這種方式,開發者能夠更好地控制和處理流中的異常情況。

上一篇:

Stable Diffusion API Key獲取與使用指南

下一篇:

使用Stable Diffusion API進行文生圖生成的完整指南
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費