精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我給清華智譜Ai(ChatGLM),寫個Java對接的SDK!

開發 項目管理
智譜Ai的Api文檔,與ChatGPT對接有一些差異。如果大家對接過ChatGPT開發,直接獲取一個ApiKey就可以使用了。但在對接智譜Ai的Api時,需要把獲取的ApiKey按照.號分割,并需要進行JWT-Token的創建。而這個Token才是實際傳給接口的內容。

大家好,我是技術UP主小傅哥。

清華大學計算機系的超大規模訓練模型 ChatGLM-130B 使用效果非常牛,所以我也想把這樣的Ai能力接入到自己的應用中或者做一些 IntelliJ IDEA Plugin 使用。但經過了一晚上的折騰,我決定給它寫個對接的SDK開源出來!—— ?? 智譜Ai不是已經有了一個SDK嗎?為啥還要寫呢?那你寫多少了?

在很早之前就關注了智譜Ai(ChatGLM),也看到官網有一個Java對接的SDK方式。但從前幾天開始正式對接發現,這SDK是8月份提交的,10個commit,而且已經2個月沒有更新了。所以真的是不少Bug呀,呀,呀!如果不去修改它的SDK代碼,就沒法對接。如;ConfigV3類中,拆分ApiKey的操作;String[] arrStr = apiSecretKey.split("."); 但這里的.是正則的關鍵字,所以根本沒法拆分。一起動就報錯 invalid apiSecretKey 這對于初次對接并且沒有看源碼的伙伴來說,是不小的炸雷。

不過,雖然 SDK 有點趕工,不好用。但不影響智譜Ai(ChatGLM)是個好東西。他的官網中有API HTTP 接口對接描述。所以,小傅哥決定跟著按照它的文檔寫一個能簡單對接,代碼有干凈整潔的 SDK 讓大家使用。

圖片圖片

那么,接下來小傅哥就介紹下,如何基于智譜Ai(ChatGLM)的開發者文檔,開發一個通用的SDK組件。也讓后續有想法PR貢獻源碼的伙伴,一起參與進來。—— 別看東西不大,寫到簡歷上,也是非常精彩的一筆!

本文不止有智譜Ai-SDK開發,還有如何在項目中運用SDK開發一個自己的OpenAi服務。文末有SDK鏈接和OpenAi應用工程。

一、對接鑒權

  • 文檔:https://open.bigmodel.cn/dev/api
  • ApiKey:https://open.bigmodel.cn/usercenter/apikeys - 申請個人授權,創建ApiKey即可

智譜Ai的Api文檔,與ChatGPT對接有一些差異。如果大家對接過ChatGPT開發,直接獲取一個ApiKey就可以使用了。但在對接智譜Ai的Api時,需要把獲取的ApiKey按照.號分割,并需要進行JWT-Token的創建。而這個Token才是實際傳給接口的內容。

圖片圖片

  • 因為生成Token會比較耗時,所以這里會使用Guava框架進行本地緩存29分鐘,有效期30分鐘的Token,確保可以有效的刷新。
  • 在工程中提供了 BearerTokenUtils Token 生成工具類,測試的時候可以使用。

二、接口處理

文檔:https://open.bigmodel.cn/dev/api#chatglm_lite - 以Api文檔的chatglm_lite模型舉例對接

傳輸方式

https

請求地址

https://open.bigmodel.cn/api/paas/v3/model-api/chatglm_lite/sse-invoke

調用方式

SSE

字符編碼

UTF-8

接口請求頭

accept: text/event-stream

接口請求格式

JSON

響應格式

標準 Event Stream

接口請求類型

POST

開發語言

任意可發起 HTTP 請求的開發語言

在正式開發代碼,要把接口的使用先簡單測試運行出來。之后再去編寫代碼。為此這里小傅哥先根據官網的文檔和鑒權使用方式,編寫了 curl http 請求;

curl -X POST \
        -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsInNpZ25fdHlwZSI6IlNJR04ifQ.eyJhcGlfa2V5IjoiNGUwODdlNDEzNTMwNmVmNGE2NzZmMGNjZTNjZWU1NjAiLCJleHAiOjE2OTY5OTM5ODIzMTQsInRpbWVzdGFtcCI6MTY5Njk5MjE4MjMxNH0.9nxhRXTJcP4Q_YTQ8w5y0CZOBOu0epP1J56oDaYewQ8" \
        -H "Content-Type: application/json" \
        -H "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)" \
        -H "Accept: text/event-stream" \
        -d '{
        "top_p": 0.7,
        "sseFormat": "data",
        "temperature": 0.9,
        "incremental": true,
        "request_id": "xfg-1696992276607",
        "prompt": [
        {
        "role": "user",
        "content": "寫個java冒泡排序"
        }
        ]
        }' \
  http://open.bigmodel.cn/api/paas/v3/model-api/chatglm_lite/sse-invoke

圖片圖片

  • 注意:Authorization: Bearer 后面傳的是 JWT Token 不是一個直接從官網復制的 ApiKey - 你可以使用工程中的 BearerTokenUtils 創建。
  • 之后可以直接運行這段腳本(也可以導入到ApiPost工具中),執行后就能獲得到運行效果了。—— 速度非常快!

三、組件開發

在??考慮到抽象和設計原則下,小傅哥這里采用了會話模型結構進行工程框架設計。把程序的調用抽象為一次會話,而會話的創建則交給工廠??。通過工廠屏蔽使用細節,在使用上簡化調用,盡可能讓外部最少知道原則。這樣的設計實現方式,既可以滿足調用方開心的使用,也可以讓SDK貢獻者見代碼如見文檔,容易理解和上手。

1. 工程結構

圖片圖片

  • 工程非常注重會話的設計和使用,因為框架的根基搭建好以后,擴展各項功能就會有跡可循。大部分代碼就是因為早期沒有考慮好框架,最后功能來了被填充的很亂。

2. 會話流程

圖片圖片

  • 會話流程以工廠創建 Session 為入口點進行使用,其他的操作都在組件內自己處理好。

3. 代碼舉例

@Override
public OpenAiSession openSession() {
    // 1. 日志配置
    HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
    httpLoggingInterceptor.setLevel(configuration.getLevel());
    
    // 2. 開啟 Http 客戶端
    OkHttpClient okHttpClient = new OkHttpClient
            .Builder()
            .addInterceptor(httpLoggingInterceptor)
            .addInterceptor(new OpenAiHTTPInterceptor(configuration))
            .connectTimeout(configuration.getConnectTimeout(), TimeUnit.SECONDS)
            .writeTimeout(configuration.getWriteTimeout(), TimeUnit.SECONDS)
            .readTimeout(configuration.getReadTimeout(), TimeUnit.SECONDS)
            .build();
    configuration.setOkHttpClient(okHttpClient);
    
    // 3. 創建 API 服務
    IOpenAiApi openAiApi = new Retrofit.Builder()
            .baseUrl(configuration.getApiHost())
            .client(okHttpClient)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(JacksonConverterFactory.create())
            .build().create(IOpenAiApi.class);
    configuration.setOpenAiApi(openAiApi);
    return new DefaultOpenAiSession(configuration);
}
  • 這是一段 DefaultOpenAiSessionFactory 創建工廠開啟會話的服務對象。使用方只需要在自己的工程中,創建出一個工廠對象就可以對接使用了。下文有代碼示例
  • 其他更多的代碼,直接看小傅哥開發好的 chatglm-sdk-java

四、組件使用

1. 組件配置

  • 申請ApiKey:https://open.bigmodel.cn/usercenter/apikeys - 注冊申請開通,即可獲得 ApiKey
  • 運行環境:JDK 1.8+
  • maven pom - 暫時測試階段,未推送到Maven中央倉庫,需要下載代碼本地 install 后使用
<dependency>
    <groupId>cn.bugstack</groupId>
    <artifactId>chatglm-sdk-java</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
  • 源碼(Github):https://github.com/fuzhengwei/chatglm-sdk-java
  • 源碼(Gitee):https://gitee.com/fustack/chatglm-sdk-java
  • 源碼(Gitcode):https://gitcode.net/KnowledgePlanet/road-map/chatglm-sdk-java

2. 單元測試

@Slf4j
public class ApiTest {

    private OpenAiSession openAiSession;

    @Before
    public void test_OpenAiSessionFactory() {
        // 1. 配置文件
        Configuration configuration = new Configuration();
        configuration.setApiHost("https://open.bigmodel.cn/");
        configuration.setApiSecretKey("4e087e4135306ef4a676f0cce3cee560.sgP2*****");
        // 2. 會話工廠
        OpenAiSessionFactory factory = new DefaultOpenAiSessionFactory(configuration);
        // 3. 開啟會話
        this.openAiSession = factory.openSession();
    }

    /**
     * 流式對話
     */
    @Test
    public void test_completions() throws JsonProcessingException, InterruptedException {
        // 入參;模型、請求信息
        ChatCompletionRequest request = new ChatCompletionRequest();
        request.setModel(Model.CHATGLM_LITE); // chatGLM_6b_SSE、chatglm_lite、chatglm_lite_32k、chatglm_std、chatglm_pro
        request.setPrompt(new ArrayList<ChatCompletionRequest.Prompt>() {
            private static final long serialVersionUID = -7988151926241837899L;

            {
                add(ChatCompletionRequest.Prompt.builder()
                        .role(Role.user.getCode())
                        .content("寫個java冒泡排序")
                        .build());
            }
        });

        // 請求
        openAiSession.completions(request, new EventSourceListener() {
            @Override
            public void onEvent(EventSource eventSource, @Nullable String id, @Nullable String type, String data) {
                ChatCompletionResponse response = JSON.parseObject(data, ChatCompletionResponse.class);
                log.info("測試結果 onEvent:{}", response.getData());
                // type 消息類型,add 增量,finish 結束,error 錯誤,interrupted 中斷
                if (EventType.finish.getCode().equals(type)) {
                    ChatCompletionResponse.Meta meta = JSON.parseObject(response.getMeta(), ChatCompletionResponse.Meta.class);
                    log.info("[輸出結束] Tokens {}", JSON.toJSONString(meta));
                }
            }

            @Override
            public void onClosed(EventSource eventSource) {
                log.info("對話完成");
            }
        });

        // 等待
        new CountDownLatch(1).await();
    }

}
  • 這是一個單元測試類,也是最常使用的流式對話模式。

五、應用接入

1. SpringBoot 配置類

@Configuration
@EnableConfigurationProperties(ChatGLMSDKConfigProperties.class)
public class ChatGLMSDKConfig {

    @Bean
    @ConditionalOnProperty(value = "chatglm.sdk.config.enabled", havingValue = "true", matchIfMissing = false)
    public OpenAiSession openAiSession(ChatGLMSDKConfigProperties properties) {
        // 1. 配置文件
        cn.bugstack.chatglm.session.Configuration configuration = new cn.bugstack.chatglm.session.Configuration();
        configuration.setApiHost(properties.getApiHost());
        configuration.setApiSecretKey(properties.getApiSecretKey());

        // 2. 會話工廠
        OpenAiSessionFactory factory = new DefaultOpenAiSessionFactory(configuration);

        // 3. 開啟會話
        return factory.openSession();
    }

}

@Data
@ConfigurationProperties(prefix = "chatglm.sdk.config", ignoreInvalidFields = true)
public class ChatGLMSDKConfigProperties {

    /** 狀態;open = 開啟、close 關閉 */
    private boolean enable;
    /** 轉發地址 */
    private String apiHost;
    /** 可以申請 sk-*** */
    private String apiSecretKey;

}
@Autowired(required = false)
private OpenAiSession openAiSession;
  • 注意:如果你在服務中配置了關閉啟動 ChatGLM SDK 那么注入 openAiSession 為 null

2. yml 配置

# ChatGLM SDK Config
chatglm:
  sdk:
    config:
      # 狀態;true = 開啟、false 關閉
      enabled: false
      # 官網地址 
      api-host: https://open.bigmodel.cn/
      # 官網申請 https://open.bigmodel.cn/usercenter/apikeys
      api-key: 4e087e4135306ef4a676f0cce3cee560.sgP2DUs*****
  • 你可以在配置文件中,通過 enabled 參數,啟動和關閉 ChatGLM SDK

六、應用開發

基于本文開發的 ChatGLM SDK 就可以對接到 OpenAi 開發一個自己的應用了。

圖片圖片

小傅哥帶著大家寫的項目,從來不是湊數項目,也從不寫一堆的 CRUD 代碼。而是按照互聯網企業級中所開發項目的模式進行架構、設計和實現。所以你跟著小傅哥學習,學的是編程的思維和編碼的能力。

責任編輯:武曉燕 來源: bugstack蟲洞棧
相關推薦

2023-06-28 18:52:53

火山引擎智譜AI

2024-06-06 09:01:00

2021-09-29 10:10:56

人工智能技術清華

2025-02-14 09:21:04

2023-10-10 13:42:56

訓練數據

2025-04-15 19:52:04

2023-09-19 09:20:16

2025-08-27 07:50:11

2025-09-22 09:00:00

AI算力模型

2025-08-11 09:59:32

昇騰

2025-11-24 14:03:48

SpringAI向量模型

2023-03-15 09:36:14

模型

2023-12-19 18:12:25

谷歌模型AI

2018-12-20 09:52:05

JVM內存分配

2025-02-14 09:50:00

DeepSeekAI

2024-05-24 09:52:09

點贊
收藏

51CTO技術棧公眾號

国产一区二区三区在线观看| 国产伦精品一区二区三区妓女| 日本中文字幕在线2020| 精品一二三四区| 久久久久久久久亚洲| 中文字幕无码人妻少妇免费| 亚洲综合在线电影| 亚洲精品大片www| 欧美一区二区三区电影在线观看 | fc2在线中文字幕| 国产伦理精品不卡| 国产999精品视频| 久久网一区二区| 北条麻妃国产九九九精品小说 | 亚洲成av人影院| 亚洲一二区在线| 亚洲av成人精品日韩在线播放| 美女性感视频久久| 91av视频在线| 久草国产在线视频| 久久免费av| 亚洲欧美日韩区| 日本少妇一级片| 日韩毛片免费看| 欧美性猛交xxxx黑人| 4444在线观看| 性开放的欧美大片| 久久精品综合网| 精品欧美国产| 亚洲h视频在线观看| 久久精品国产成人一区二区三区| 欧美专区中文字幕| 日本a在线观看| 中文字幕日韩一区二区不卡| 色婷婷综合久久久久中文字幕1| 成年人的黄色片| 成人18夜夜网深夜福利网| 欧美精品乱码久久久久久按摩 | 日韩欧美在线观看强乱免费| 无码国产精品一区二区免费16| 国产精品一区二区你懂的| 国产精品偷伦免费视频观看的| 亚洲va在线观看| 国产视频欧美| 欧美一级视频在线观看| 动漫精品一区一码二码三码四码 | 欧美 日韩 亚洲 一区| 欧美精品videossex少妇| 亚洲日本在线a| 黄瓜视频免费观看在线观看www| av二区在线| 中文字幕av一区二区三区高| 日韩亚洲视频| √天堂资源地址在线官网| 国产女同互慰高潮91漫画| 日本精品一区二区| 福利在线播放| 国产精品久久综合| 一区二区三区av| 成人无遮挡免费网站视频在线观看| 综合久久久久久久| 久久久久久久久影视| 欧美xxxbbb| 欧美日韩国产精品一区二区三区四区| 国产 福利 在线| 东京一区二区| 欧美人狂配大交3d怪物一区| 日韩精品xxx| 国产成人精品福利| 精品一区精品二区| 日本爱爱爱视频| 97在线精品| 欧美国产视频日韩| 国产成人一区二区三区影院在线| 免费在线亚洲| 国产精品午夜视频| 精品人妻一区二区三区三区四区| 成人免费高清在线观看| 蜜桃久久精品乱码一区二区 | 国产精品丝袜黑色高跟鞋| 国产精品自拍在线| 精品蜜桃传媒| 欧洲日本在线| 亚洲综合在线观看视频| 奇米影视亚洲色图| 四虎4545www精品视频| 欧美日韩国产精品自在自线| 性猛交╳xxx乱大交| 精品一区三区| 欧美成人精品在线视频| 欧美日韩综合一区二区三区| 精品中文字幕一区二区小辣椒 | 91 视频免费观看| 风间由美一区二区av101 | www在线免费观看视频| 亚欧色一区w666天堂| 邪恶网站在线观看| 国产毛片久久久| 一本色道久久88精品综合| 在线免费日韩av| 久久久久欧美精品| 成人欧美一区二区| av资源网站在线观看| 夜夜嗨av一区二区三区| 午夜欧美福利视频| 国产精品99久久免费观看| 色悠悠国产精品| 黄网在线观看视频| 国产精品一二一区| 亚洲mv在线看| 91av亚洲| 亚洲风情亚aⅴ在线发布| 精品国产国产综合精品| 亚洲在线视频| 国产精品一区二区av| 好吊日视频在线观看| 日本精品一区二区三区高清| 制服.丝袜.亚洲.中文.综合懂| 日本一区二区三区视频| 51视频国产精品一区二区| 亚洲av无码国产综合专区| 国产精品嫩草影院com| 1024精品视频| 亚洲成人福利片| 国产一区二区视频免费在线观看| 亚洲经典视频| 精品久久久999| 中国女人真人一级毛片| 久久影院午夜片一区| 免费无码毛片一区二三区| 日韩在线精品强乱中文字幕| 色偷偷噜噜噜亚洲男人的天堂| 麻豆精品久久久久久久99蜜桃| 成人高清视频在线观看| 一本大道东京热无码aⅴ| 欧美爱爱视频| 在线不卡国产精品| 波多野结衣高清视频| 久久综合网色—综合色88| 精品少妇人妻av免费久久洗澡| 99久久人爽人人添人人澡 | 国产精品普通话对白| 国产精品久久久对白| 青青草原av在线| 日韩欧美一区在线观看| 亚洲最大的黄色网址| 加勒比av一区二区| 国产精品亚洲天堂| 国产电影一区| 欧美大片在线看免费观看| 国产jzjzjz丝袜老师水多| 亚洲乱码一区二区三区在线观看| 日本黄色www| 国产精品a级| 国产精华一区| 日韩精品美女| 亚洲色图50p| 中文字幕久久熟女蜜桃| 国产精品视频一二三| 久久国产激情视频| 亚洲一区欧美| 国产精品国产亚洲精品看不卡15| 国产激情在线| 欧美sm美女调教| 久草手机在线观看| 国产欧美日韩激情| 亚洲第一天堂久久| 国内精品久久久久久久影视蜜臀| 国产伦精品一区二区三区免费视频| av白虎一区| 亚洲日本中文字幕| 亚洲午夜精品久久久| 亚洲伦理在线精品| 黄色在线观看av| 久久精品国产久精国产| 日本一道在线观看| 日韩精品福利一区二区三区| 国产精品av网站| 黄色成人在线| 亚洲剧情一区二区| 一级片aaaa| 午夜欧美在线一二页| a级在线免费观看| 国产一区二区影院| 国产h视频在线播放| 日韩精品诱惑一区?区三区| av在线不卡观看| 丝袜美腿诱惑一区二区三区| 久久视频在线直播| 亚洲 国产 欧美 日韩| 欧美日韩视频一区二区| 国产第100页| 国产精品麻豆视频| 国产真实乱人偷精品| 另类小说一区二区三区| 男人添女荫道口图片| 成人同人动漫免费观看| 国产精品麻豆免费版| 国产亚洲精彩久久| 国a精品视频大全| 日韩av在线免费看| 国产熟女一区二区三区四区| 色欧美88888久久久久久影院| 国产在线一卡二卡| 国产午夜精品一区二区三区嫩草 | 日韩aaa久久蜜桃av| 国产一区二区在线免费视频| 黄视频免费在线看| 欧美成人h版在线观看| 国产精品视频一区二区久久| 欧美tickling挠脚心丨vk| 一区二区三区黄色片| 色婷婷国产精品| 久久久久亚洲av成人片| 国产精品国产三级国产普通话蜜臀| 波多野结衣办公室双飞| 国产一区三区三区| 国产一伦一伦一伦| 久久一二三四| 黄在线观看网站| 亚洲免费激情| 日韩国产成人无码av毛片| 色偷偷综合网| 色播亚洲婷婷| 欧美欧美黄在线二区| 九九九九久久久久| 都市激情久久| 国产富婆一区二区三区 | 玖玖视频精品| 自拍日韩亚洲一区在线| 国产精品大片| 精品少妇人欧美激情在线观看| 91精品国产自产在线观看永久∴ | 久久九九精品| 国产亚洲欧美在线视频| 亚洲理伦在线| 久久黄色片视频| 国产视频一区免费看| 男人日女人逼逼| 亚洲国内精品| 波多野结衣乳巨码无在线| 亚洲三级毛片| 国产精品一区二区免费在线观看| av不卡在线看| 草草久久久无码国产专区| 国产亚洲福利| 丰满人妻中伦妇伦精品app| 午夜在线观看免费一区| 久久久免费视频网站| 日韩国产精品久久久久久亚洲| 丁香婷婷激情网| 免费一级片91| www.亚洲自拍| 国产suv一区二区三区88区| 蜜桃视频无码区在线观看| 成人性视频免费网站| 白嫩情侣偷拍呻吟刺激| 91视频91自| 日本一级免费视频| 国产精品久久久久影院色老大| 老司机成人免费视频| 玉米视频成人免费看| 久久久精品一区二区涩爱| 午夜精品在线视频一区| 毛片毛片女人毛片毛片| 欧美性xxxxxx少妇| 国产又黄又大又爽| 精品福利在线导航| 免费在线看v| 啊v视频在线一区二区三区 | 成人黄色影片在线| 一区二区三区免费在线看| 国产一区二区免费在线观看| 黑丝美女一区二区| 欧美与动交zoz0z| 亚洲美女色禁图| 999精彩视频| 国产成人综合视频| 97超碰在线免费观看| 最近日韩中文字幕| 国产精品美女久久久久av爽| 欧美天堂一区二区三区| www.久久久久久久久久| 国产网站欧美日韩免费精品在线观看| av在线资源网| 欧美激情伊人电影| 成年人视频观看| 精品三级av在线导航| 日本不卡高清视频一区| 亚洲色图网站| 美女福利视频在线| 国产精品一区二区三区99| 成人午夜福利一区二区| 依依成人综合视频| 亚洲中文一区二区| 精品日韩在线一区| 在线观看的av| 97超碰蝌蚪网人人做人人爽| 日韩在线你懂得| 久久精品99| 欧美91福利在线观看| 波多结衣在线观看| 97精品超碰一区二区三区| 91九色丨porny丨极品女神| 欧美日韩国产丝袜另类| 国产黄频在线观看| 国产亚洲精品久久久| h片视频在线观看| 成人欧美一区二区三区在线| 婷婷综合电影| 欧美亚洲黄色片| 国内不卡的二区三区中文字幕 | 色棕色天天综合网| 国产日韩亚洲欧美在线| 麻豆国产精品777777在线| 中文字幕日韩三级片| 亚洲精品久久嫩草网站秘色| 中文字幕在线观看国产| 亚洲欧美国产一本综合首页| 91超碰在线播放| 91免费看网站| **女人18毛片一区二区| 日韩一级免费片| 国产欧美1区2区3区| 久久久久久在线观看| 亚洲成人黄色网址| 国产黄色大片在线观看| 91久久精品www人人做人人爽 | 91精品啪在线观看国产爱臀 | 亚洲性图自拍| 91久久夜色精品国产网站| 色综合五月天| 小泽玛利亚视频在线观看| 国产日产欧美一区| 日本a级c片免费看三区| 亚洲精品在线看| 自拍偷拍欧美视频| 久久久久久国产精品免费免费| 亚洲精品1区2区| 伦理片一区二区| 亚洲第一精品在线| 天天干视频在线| 91国偷自产一区二区三区的观看方式| 国产精品宾馆| 少妇高潮喷水在线观看| 99精品欧美一区二区三区小说| 日韩成人免费在线视频| 亚洲第一精品电影| 天堂中文av在线资源库| 蜜桃精品久久久久久久免费影院| 久久久精品日韩| 久久久久久久香蕉| 青草影视电视剧免费播放在线观看| 国产成人精品电影| 成人在线电影在线观看视频| 亚洲污视频在线观看| 中文字幕欧美一区| www.久久久久久| 6080yy精品一区二区三区| 九九在线高清精品视频| 午夜dv内射一区二区| 中文字幕在线一区| 国内精品偷拍视频| 国自在线精品视频| 蜜臀91精品国产高清在线观看| 日本久久久久久久久久久久| 国产精品国产自产拍高清av | 成年免费在线观看| 亚洲人成啪啪网站| 日韩一区二区三区四区五区| 成人午夜免费在线视频| 26uuu精品一区二区| 亚洲影院一区二区三区| 久久久久久久国产精品| 亚洲精品推荐| 国产传媒免费观看| 亚洲成a人在线观看| 26uuu另类亚洲欧美日本一 | 91丨九色丨尤物| 亚洲精品国产精品乱码视色| 久久综合五月天| 日韩欧美天堂| av在线免费看片| 欧美性色视频在线| 黄色网址免费在线观看| 精品一区2区三区| 久久精品国产在热久久| 日本在线观看视频网站| 在线亚洲国产精品网| 中文字幕亚洲在线观看| 天天碰免费视频| 亚瑟在线精品视频| 国产视频一区二区| 欧美日韩一区二区视频在线| 国产一区二区三区免费观看| 免费观看一级视频| 欧美电影免费观看| 国产青草视频在线观看| 国产免费成人在线视频| 蜜桃视频污在线观看|