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

構建 JavaScript ChatGPT 插件,你學會了嗎?

人工智能
如果你已經有一個在本地或外部運行的API來發送請求,你可以把這個服務器作為一個代理,把請求轉發給它。這是一個值得推薦的選項,因為它使你能夠快速測試和迭代如何處理清單和規范文件,而不必重新部署或更新你現有的代碼庫。

聊天插件系統是一種令人興奮的新方式,可以擴展ChatGPT的功能,納入您自己的業務數據,并為客戶與您的業務互動增加另一個渠道。在這篇文章中,我將解釋什么是聊天插件,它們能做什么,以及你如何用JavaScript建立你自己的聊天插件。

這篇文章(或OpenAI所稱的"訓練數據")提供了一個快速入門指南,來建立你的第一個ChatGPT插件,并將其與ChatGPT界面整合。

聊天插件是否會成為改變生活的賈維斯般的體驗,或者只是一個昂貴的Alexa-for-your-browser,目前還沒有定論。讓我們通過看看插件能提供什么,需要注意什么,以及如何制作你自己的插件,來決定我們自己的想法。

目錄

  • 什么是聊天插件?

插件組成部分

聊天插件生態系統的新機遇

插件開發的考量和局限

  • 設置項目
  • 添加OpenAI清單和API規范
  • 創建服務器
  • 設置強制性的插件路由
  • 設置Todo路由
  • 驗證和測試插件
  • (可選)將該服務器作為代理
  • 下一步

什么是聊天插件?

"聊天插件"允許ChatGPT模型使用并與第三方應用程序互動。從本質上講,它是一套指令和規范,語言模型可以遵循這些指令和規范在聊天對話中創建API的調用和操作。與第三方系統的整合為ChatGPT的用戶提供了一系列新的功能:

  • 創建、更新和修改我們自己的業務數據和數據庫(如銷售、營銷系統)
  • 從外部服務中獲取信息(如金融、天氣API)
  • 執行操作(例如,發送Slack消息)

插件組成部分

建立一個能與AI互動的應用程序似乎是一個令人生畏的復雜系統,然而,一旦你開始做,你會發現它非常簡單。一個"插件"是一套簡單的指令,它告訴ChatGPT模型你的API是做什么的,以及如何和何時訪問它。

這可以歸結為兩個重要文件:

  1. ai-plugin.json:插件清單,包含插件的基本元數據。這包括名稱、作者、描述、認證和聯系等細節。該清單被ChatGPT用來理解插件的作用。
  2. openapi.yaml:在OpenAPI規范中,你的API路由和模式的規范。也可以以json文件的形式提供。這將告訴ChatGPT可以使用哪些API,出于什么原因,以及請求和響應會是什么樣子。

插件服務的基礎功能和托管由你決定。你的API可以托管在任何地方,使用任何REST API或編程語言。

聊天插件生態系統的新機遇

聊天插件的到來為開發者、設計師、企業和企業家帶來了一系列的機會:

  • 「交互可以更"聰明"和更"流暢"」 :插件引入了人性化、假設和上下文的能力,并結合請求提供這些能力。這為互動增加了一個流動性的元素,而這是一個死板的GUI或結構化的數據API所不能滿足的。例如,"我今天應該穿外套嗎?"這個提示將導致API調用一個基于你的位置的天氣服務,對天氣的解釋,以及對原始問題的回答:"是的,你應該穿一件夾克。今天的溫度是12度,有80%的機會下雨。"。
  • 「新的客戶渠道」:ChatGPT在2023年4月以1.73億活躍用戶創造了增長最快的用戶記錄。毫無疑問,在這個平臺上占有一席之地,為你提供了接觸大量潛在客戶的機會。它還提供了一種潛在的更容易、更直觀、更容易與使用它的現有客戶互動的方式。
  • 「人工智能界面(A.I.I.)的崛起」:用戶現在無需點擊"按鈕"就可以執行復雜的操作。從理論上講,一個插件可以提供一個驚人的服務,而不需要像傳統的用戶界面那樣需要關注界面才行(或根本不需要)。一個直觀的規范可能變得和一個直觀的網絡應用一樣重要。
  • 「新的商業機會」:人工智能在提供工作的同時也會帶走工作。如果成功的話,插件生態系統將為插件開發者、人工智能API開發者,以及為企業托管、認證和管理插件的全新垂直業務創造新的機會和空間。

插件開發的考量和局限

直觀和無代碼界面的好處帶來了一系列挑戰。承認生態系統、邏輯和界面會隨著時間的推移而發展,在構建插件時,我們仍然需要記住一些事情。特別是如果你想把它們作為一項業務來建立。

  • 「響應速度慢」:解釋自然語言、選擇插件、建立請求和解釋響應都需要時間。對于簡單的信息請求或操作,自己做就可以更快。根據上面的例子,我看一下我的手機主屏幕比等待15秒讓ChatGPT解釋天氣并寫給我要快得多。
  • 「成本高」:用戶將花費token來與任何插件互動。這增加了潛在的成本,即使你是免費提供給他們的東西。你還必須為托管和運營這些API的基礎設施付費。
  • 「不同方式」:在內部,與插件的互動仍然是REST API,只能執行我們與其他客戶端相同的操作。插件更像是一個與企業互動的新渠道,而不是目前讓人工智能為我們服務的新范式。
  • 「可操縱性」:由于用戶在默認情況下看不到API響應,誤導性信息和其他惡意策略可能會被插件制造商用來歪曲答案。
  • 「不可預測性」:讓生成模型負責決策是有風險的,行為是不可靠的。有很多推理和猜測工作在幕后發生,以根據人類書面聊天提示創建API請求。打字不規范的信息或含糊不清的描述可能會導致調用錯誤的API或做出錯誤的行動。

構建第一個JavaScript ChatGPT 插件

我們將為我們的聊天插件建立自己的express服務器。這不僅是一個容易上手的方法,而且express可以被擴展到包括中間件、認證和所有其他你想要的生產級的東西。

以下是我們將在下列步驟中創建和添加代碼的所有文件。如果你感到困惑,可以回到這里,或者克隆這里的源碼[1]。

my-chat-plugin/
├─ .well-known/
│  ├─ ai-plugin.json  <- 插件元數據
├─ routes/
│  ├─ todos.js        <- 處理Todo請求的路由
│  ├─ openai.js       <- 處理openAI請求的路由
openapi.yaml          <- Open API規范
index.js              <- 插件入口

「先決條件」

  1. 「OpenAI賬號」:在這里注冊[2]
  2. 「ChatGPT插件訪問」:如果你還沒有通過付費賬戶訪問,你可以在這里[3]加入等待名單。

設置項目

創建一個名為my-chat-plugin的文件夾,執行下面的命令來開始:

## 1. Create the directory and open it
mkdir my-chat-plugin && cd my-chat-plugin

## 2. Initialize a project with the default values
npm init --yes

## 3. Install our dependencies
npm install axios express cors js-yaml

添加OpenAI清單和API規范

現在,我們要創建所需的聊天插件清單和OpenAPI規范。ChatGPT會在你服務器的特定路由上請求這些文件,所以我們要把它們放在:

  • /.well-known/ai-plugin.json
  • /openapi.yaml

這些文件中的描述是非常重要的!如果你在summary和description_for_model字段中的語言含糊不清,你可能會讓ChatGPT對何時和如何使用你的插件感到困惑。請遵循以下步驟:

  1. 創建一個名為.well-known的文件夾,并在其中添加一個名為ai-plugin.json的文件。通過終端進行操作:
mkdir .well-known && touch .well-known/ai-plugin.json

粘貼下面代碼到ai-plugin.json中:

{
    "schema_version": "v1",
    "name_for_human": "My ChatGPT To Do Plugin",
    "name_for_model": "todo",
    "description_for_human": "Plugin for managing a To Do list. You can add, remove and view your To Dos.",
    "description_for_model": "Plugin for managing a To Do list. You can add, remove and view your ToDos.",
    "auth": {
        "type": "none"
    },
    "api": {
        "type": "openapi",
        "url": "<http://localhost:3000/openapi.yaml>",
        "is_user_authenticated": false
    },
    "logo_url": "<http://localhost:3000/logo.png>",
    "contact_email": "support@yourdomain.com",
    "legal_info_url": "<http://www.yourdomain.com/legal>"
}
  1. 在項目根路徑下創建一個名為openapi.yaml,并且添加下列代碼到文件中。

這是OpenAPI規范,ChatGPT會用它來理解您的API路由的作用(注意每個路由的summary)以及請求和響應的格式。如果ChatGPT在使用您的API時遇到問題,十有八九是因為這個規范與您的API的響應不一致。

openapi: 3.0.1
info:
  title: TODO Plugin
  description: A plugin that allows the user to create and manage a To Do list using ChatGPT.
  version: 'v1'
servers:
  - url: <http://localhost:3000>
paths:
  /todos:
    get:
      operationId: getTodos
      summary: Get the list of todos
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Todo'
    post:
      operationId: addTodo
      summary: Add a todo to the list
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Todo'
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Todo'
  /todos/{id}:
    delete:
      operationId: removeTodo
      summary: Delete a todo from the list when it is complete, or no longer required.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "204":
          description: No Content
components:
  schemas:
    Todo:
      type: object
      properties:
        id:
          type: integer
          format: int64
        task:
          type: string
      required:
        - id
        - task

創建服務器

我們的下一步是創建我們的主文件,也就是我們插件的入口。在項目根目錄下,添加一個名為index.js的文件,并添加以下代碼。

注意:ChatGPT文檔顯示openapi.yaml和openapi.json都有一個路由。本地測試顯示只有yaml文件被請求,但值得把它們都放在那里,因為以后可能會用到。

粘貼下面代碼到index.js中:

const express = require('express');
const cors = require('cors');
const todoRouter = require('./routes/todos');
const openaiRoutes = require('./routes/openai');

const app = express();
const PORT = 3000;

// Setting CORS to allow chat.openapi.com is required for ChatGPT to access your plugin
app.use(cors({ origin: [`http://localhost:${PORT}`, '<https://chat.openai.com>'] }));
app.use(express.json());

// Simple request logging to see if your plugin is being called by ChatGPT
app.use((req, res, next) => {
  console.log(`Request received: ${req.method}: ${req.path}`)
  next()
})

// OpenAI Required Routes
app.use(openaiRoutes);

// The dummy todos API
app.use('/todos', todoRouter);

app.listen(PORT, () => {
  console.log(`Plugin server listening on port ${PORT}`);
});

上述代碼做了下列事情:

  • 導入express和cors所需的庫
  • 導入我們的路由特定邏輯,在下一步添加
  • 添加日志中間件,將任何傳入的請求打印到控制臺中
  • 提供一個通用的轉發函數,如果你已經有一個API服務就可以使用

設置強制性的插件路由

在這一步中,我們將為OpenAI / ChatGPT添加強制性的路由,來獲取所需文件。我們將把所有具體的路由邏輯放在一個"routes"目錄中。這就是我們將存儲插件路由以及其他自定義路由的地方。

(你可能希望用額外的文件夾(控制器、中間件、服務等)擴展這個結構,或者創建你自己的結構)。

  1. 創建/routes文件夾
  2. 創建名為openai.js的文件
  3. 粘貼下列代碼到routes/openai.js中:
const express = require('express');
const router = express.Router();
const fs = require('fs');
const path = require('path');
const yaml = require('js-yaml');

router.get('/openapi.yaml', async function(req, res) {
  try {
    const yamlData = fs.readFileSync(path.join(process.cwd(), 'openapi.yaml'), 'utf8');
    const jsonData = yaml.load(yamlData);
    res.json(jsonData);

  } catch(e) {
    console.log(e.message)
    res.status(500).send({ error: 'Unable to fetch manifest.' });
  }
});

router.get('/.well-known/ai-plugin.json', function(req, res) {
  res.sendFile(path.join(process.cwd(), '/.well-known/ai-plugin.json'));
});

router.get('/logo.png', function(req, res) {
  res.sendFile(path.join(process.cwd(), 'logo.png'));
})

module.exports = router;

上述代碼做了下列事情:

  • 定義了兩個路由,供插件檢索你的清單和API規范。
  • 定義了一個路由,讓插件在聊天中檢索并顯示你的插件標識。
  • 導出所有的路由,以便我們可以在index.js中導入它們。

設置Todo路由

現在我們將創建一些簡單的路由來模擬一個簡單的創建、更新、刪除功能。我們通常避免使用todo教程,但考慮到文檔中使用這個作為指南,我們希望盡可能保持它的可轉移性。

  1. 在你的路由文件夾中,創建一個名為todos.js的新文件
  2. 將以下代碼粘貼到routes/todos.js中:
const express = require('express');
const router = express.Router();

let todos = [
    { id: 1, task: 'Wake up' },
    { id: 2, task: 'Grab a brush'},
    { id: 3, task: 'Put a little makeup'},
    { id: 4, task: 'Build a Chat Plugin'}
]; // placeholder todos

let currentId = 5; // to assign unique ids to new todos

getTodos = async function(req, res) {
    res.json(todos);
}

addTodo = async function(req, res) {
    const { task } = req.body;
    const newTodo = { id: currentId, task };
    todos.push(newTodo);
    currentId++;
    res.json(newTodo);
}

removeTodo = async function(req, res) {
    const { id } = req.params;
    todos = todos.filter(todo => todo.id !== Number(id));
    res.json({ "message" : "Todo successfully deleted" });
}

router.get('/', getTodos);
router.post('/', addTodo);
router.delete('/:id', removeTodo);

module.exports = router;

上述代碼做了下列事情:

  • 創建3條路由,從一個簡單的todo項目列表中獲取、創建和刪除。
  • 將這些路由導出,導入到我們的index.js文件。

驗證和測試插件

現在,有趣的部分來了。我們已經有了所有必要的代碼和設置,可以在ChatGPT上手動建立和運行一個本地插件了!我們開始吧:

  1. 「開啟服務」

在終端中輸入node index.js。這會在終端中開啟服務并打印’Plugin server listening on port 3000’。

  1. 「將其連接到ChatGPT本地插件」

進入chat.openai.com[4],在你的賬戶中打開一個新的聊天窗口。點擊GPT-4下拉菜單,Plugins > Plugin Store > 點擊Develop Your Own Plugin > 輸入localhost:3000 > 點擊「Find manifest file」。

圖片

  1. 「測試插件」

你應該看到一條驗證信息,即ChatGPT能夠獲得你的清單文件,這樣你就可以開始了。如果沒有,請檢查你的終端,服務器正在運行,并且正在接收傳入的請求。

試試下面的一些命令:

  • "what are my todos?"
  • I have woken up(你不需要說出確切的Todo任務,它就能理解你指的是什么)

(可選)將該服務器作為代理

如果你已經有一個在本地或外部運行的API來發送請求,你可以把這個服務器作為一個代理,把請求轉發給它。這是一個值得推薦的選項,因為它使你能夠快速測試和迭代如何處理清單和規范文件,而不必重新部署或更新你現有的代碼庫。

在你創建的路由下的index.js中添加以下代碼:

// PASTE IN BEFORE app.listen(... 

// Proxy server to an existing API
const api_url = '<http://localhost>';

app.all('/:path', async (req, res) => {
  const { path } = req.params;
  const url = `${api_url}/${path}`;

  console.log(`Forwarding call: ${req.method} ${path} -> ${url}`);

  const headers = {
    'Content-Type': 'application/json',
  };

  try {
    const response = await axios({
      method: req.method,
      url,
      headers,
      params: req.query,
      data: req.body,
    });

    res.send(response.data);
  } catch (error) {
    console.error(`Error in forwarding call: ${error}`);
    res.status(500).send('Error in forwarding call');
  }
});

下一步

這個基本教程應該是你開始建立自己的基于JavaScript的成熟聊天插件所需要的。將你的應用程序部署到生產環境中,需要一些額外的認證和部署步驟。教程中沒有提到這些,但我推薦以下資源來完成這些工作:

  • 官方插件實例[5]:服務水平認證,和檢索插件。
  • 生產你的應用程序[6]:在Plugin store中出現的主機、安全和性能要求有關的官方指南。

本文譯自:https://www.sitepoint.com/javascript-chatgpt-plugin/[7]

以上就是本文的全部內容,感謝閱讀。

參考資料

[1]源碼:https://github.com/sitepoint-editors/chatgpt-plugin-quickstart-js

[2]注冊:https://platform.openai.com/signup?launch

[3]這里:https://openai.com/waitlist/plugins

[4]chat.openai.com:https://chat.openai.com/

[5]官方插件實例:https://platform.openai.com/docs/plugins/examples

[6]生產你的應用程序:https://platform.openai.com/docs/plugins/production/domain-verification-and-security

[7]https://www.sitepoint.com/javascript-chatgpt-plugin/:https://www.sitepoint.com/javascript-chatgpt-plugin/

責任編輯:武曉燕 來源: 前端F2E
相關推薦

2023-07-26 13:11:21

ChatGPT平臺工具

2024-11-29 08:53:46

2023-05-04 08:01:35

umi 插件開發插件

2024-11-28 10:09:06

2023-06-15 08:00:23

2024-07-17 09:23:58

Vite插件機制

2024-09-04 08:40:51

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構

2024-02-04 00:00:00

Effect數據組件

2023-06-28 11:01:08

2024-01-02 12:05:26

Java并發編程

2023-08-01 12:51:18

WebGPT機器學習模型

2023-01-30 09:01:54

圖表指南圖形化

2022-07-08 09:27:48

CSSIFC模型

2024-08-06 09:47:57

2023-10-10 11:04:11

Rust難點內存

2024-07-31 08:39:45

Git命令暫存區

2023-12-12 08:02:10

2024-05-06 00:00:00

InnoDBView隔離
點贊
收藏

51CTO技術棧公眾號

在线中文字幕视频观看| 成年人视频免费| 国产精品白丝一区二区三区| 欧美午夜无遮挡| 亚洲一卡二卡| 免费观看黄一级视频| 久久国产直播| 另类少妇人与禽zozz0性伦| 日本道中文字幕| 中文字幕日本一区二区| 夜色激情一区二区| 欧美精品在线一区| 国产婷婷在线视频| 久久久青草婷婷精品综合日韩| 日韩中文字幕第一页| 日本不卡视频一区| 欧美韩国日本| 福利一区福利二区微拍刺激| 在线观看欧美亚洲| 免费国产在线观看| 成人性视频网站| 国产精品久久久久久久久借妻| 久久精品第一页| 日韩在线观看一区| 日韩电影中文 亚洲精品乱码 | 一本久道久久久| 久久国产一区二区三区| 国产美女免费网站| 精品综合久久88少妇激情| 欧美二区乱c少妇| 久久久久久久久久久免费视频| 后进极品白嫩翘臀在线播放| 国产精品毛片大码女人| 欧美日韩一区二区三区在线视频| 亚洲国产综合一区| 国产美女在线精品| 国产啪精品视频| 日韩欧美在线观看免费| 日韩视频不卡| 久久久久亚洲精品| 国产亚洲欧美精品久久久www| 久久久五月天| 日韩中文字幕网站| 中文字幕在线观看2018| 日韩专区精品| 日韩在线观看成人| b站大片免费直播| 亚洲精品aaaaa| 亚洲免费视频一区二区| 亚洲精品乱码久久久久久不卡| 2020国产精品极品色在线观看| 91精品国产高清一区二区三区 | 久久99成人| 337p亚洲精品色噜噜| 99re精彩视频| www.成人| 精品日韩在线一区| 国产极品一区二区| 亚洲精品国产精品粉嫩| 亚洲欧洲在线免费| 国产午夜精品久久久久久久久| 凹凸成人精品亚洲精品密奴| 中文字幕国产亚洲| tube国产麻豆| 韩国亚洲精品| 2021国产精品视频| 无码人妻精品一区二区三区9厂| 日本美女视频一区二区| 国产九九精品视频| 99久久久国产精品无码免费| 国产高清成人在线| 狠狠爱一区二区三区| 精品美女视频在线观看免费软件| 国产精品免费丝袜| 免费成人深夜夜行网站视频| 色呦呦在线视频| 姬川优奈aav一区二区| 国产欧美高清在线| 国产精品黄色片| 日韩欧美久久一区| 国产精品无码一区二区三区免费| 精品一区电影| 欧美成人合集magnet| 日本一区二区不卡在线| 日本免费在线视频不卡一不卡二| 亚洲伊人第一页| 色视频免费在线观看| 国产精品免费免费| 霍思燕三级露全乳照| 国精产品一区二区三区有限公司| 欧美日韩高清一区二区三区| 影音先锋资源av| 精品国产乱码| 欧美精品福利在线| 午夜一区二区三区四区| 国产精品一品视频| 色女孩综合网| 国产盗摄精品一区二区酒店| 欧美在线一区二区| 日本一区二区免费视频| 欧美中文字幕一区二区| 久久久久久美女| 午夜视频网站在线观看| 岛国精品在线观看| 一本一道久久久a久久久精品91| 美洲精品一卡2卡三卡4卡四卡| 在线精品视频免费观看| 中文字幕第10页| 精品久久成人| 欧美一级bbbbb性bbbb喷潮片| 一级黄色免费片| 91麻豆精品一区二区三区| 三级在线免费观看| se01亚洲视频| 亚洲激情视频在线| 小泽玛利亚一区二区免费| 视频一区欧美日韩| 国产一区二区高清视频| 在线观看中文字幕的网站| 欧美午夜片在线观看| 30一40一50老女人毛片| 亚洲性人人天天夜夜摸| 91丨九色丨国产在线| 国产精品秘入口| 欧美三级免费观看| 四虎精品一区二区| 国内揄拍国内精品久久| 91免费综合在线| 免费a级在线播放| 欧美专区在线观看一区| av在线网站观看| 日韩一级网站| 精品视频在线观看| 久久www人成免费看片中文| 欧美一区二区三区免费观看视频 | 欧美精品羞羞答答| 日本精品久久久久影院| 亚洲欧美一区二区三| 亚洲mv在线观看| 国产精品入口麻豆| 亚洲伦理精品| 国产精品美女黄网| 免费污视频在线观看| 精品国产百合女同互慰| 久久综合久久鬼| 粉嫩av一区二区三区在线播放| 蜜臀av.com| 人人爱人人干婷婷丁香亚洲| 色综合男人天堂| 丰满人妻妇伦又伦精品国产| 亚洲国产美女搞黄色| 中国黄色片视频| 亚洲伊人观看| 欧美一区二区影视| 香蕉成人影院| 久久精品精品电影网| 国产乱色精品成人免费视频| 亚洲精品成人天堂一二三| 亚欧精品在线视频| 尤物网精品视频| 快播亚洲色图| 影视一区二区三区| 色偷偷88888欧美精品久久久| 国产孕妇孕交大片孕| 一区二区三区日韩在线观看| 日本黄色动态图| 美女精品在线| 一区二区三区电影| 日韩精品中文字幕吗一区二区| 午夜精品久久17c| 激情在线视频| 日韩限制级电影在线观看| 日本熟伦人妇xxxx| 欧美国产国产综合| 天天爽夜夜爽视频| 在线一区视频| 亚洲国产欧美不卡在线观看| 日韩精品一区二区三区免费视频| 555www成人网| 色哟哟免费在线观看| 精品久久久久香蕉网| 亚洲国产精品无码久久久| 中文字幕视频一区二区三区久| 亚洲一区和二区| 日本成人在线电影网| 国产一区 在线播放| 亚洲人成网77777色在线播放| 成人www视频在线观看| 日韩经典av| 一区二区三区视频在线| 国产99久一区二区三区a片| 精品国产乱码久久久久久天美| 大胸美女被爆操| 粉嫩av一区二区三区| 在线观看的毛片| 亚洲精品孕妇| 在线无限看免费粉色视频| 欧美自拍一区| 亚洲一区免费网站| av有声小说一区二区三区| 欧美另类极品videosbest最新版本 | 狠狠色狠狠色合久久伊人| 青青草国产精品视频| 97精品一区| 日韩精品一区二区三区丰满| silk一区二区三区精品视频 | 欧美老少配视频| 超碰免费在线| 亚洲美女av网站| 高h放荡受浪受bl| 欧美久久久久久久久| 免费看污视频的网站| 亚洲一区二区三区四区五区黄 | 少妇激情一区二区三区视频| 九九热在线视频观看这里只有精品| 免费在线观看亚洲视频| 欧美日韩一视频区二区| 国产对白在线播放| 精品日韩在线| 你懂的视频在线一区二区| 99re热精品视频| 91亚洲精品久久久久久久久久久久| 成人黄色免费短视频| 2019中文字幕免费视频| mm视频在线视频| 欧美激情精品久久久久久| 国产在线高清视频| 在线观看国产精品91| 日韩大片b站免费观看直播| 欧美tk丨vk视频| 亚洲不卡免费视频| 欧美一区二区黄色| 国产精品视频一二区| 欧美四级电影在线观看| 91在线视频免费播放| 欧美色图在线视频| 西西44rtwww国产精品| 亚洲高清中文字幕| 久久精品国产亚洲av香蕉| 亚洲一区二区欧美| 久久亚洲成人av| 亚洲国产日韩一区二区| 国产亚洲第一页| 午夜影院在线观看欧美| 日韩欧美视频在线免费观看| 午夜精品福利久久久| www.国产成人| 一本大道久久a久久综合婷婷| 在线观看 亚洲| 色av一区二区| 国产精华7777777| 欧美日韩精品系列| 夜夜躁狠狠躁日日躁av| 91精品一区二区三区在线观看| 国产一区二区自拍视频| 5858s免费视频成人| www.99视频| 亚洲国产91色在线| 免费理论片在线观看播放老| 亚洲无亚洲人成网站77777| 高清av电影在线观看| 色久欧美在线视频观看| caoporn免费在线视频| 欧美大荫蒂xxx| 涩涩涩视频在线观看| 国产精品电影在线观看| 日本成人在线网站| http;//www.99re视频| 精品久久对白| 无码免费一区二区三区免费播放| 色婷婷色综合| 欧美亚洲黄色片| 性欧美精品高清| 日本一二区免费| 成人毛片在线观看| 蜜乳av中文字幕| 亚洲老妇xxxxxx| 欧美三级午夜理伦| 欧美精品 日韩| 手机看片一区二区三区| 最好看的2019年中文视频| 91精选在线| 日本精品一区二区三区在线播放视频| 国产一区高清| 国产精选在线观看91| 日本一区二区免费高清| 国产成人永久免费视频| 日本不卡在线视频| 香蕉在线观看视频| 国产欧美日韩亚州综合| 欧美国产日韩综合| 色老综合老女人久久久| www日本视频| 亚洲性夜色噜噜噜7777| 激情网站在线| 国产中文字幕日韩| 欧美激情久久久久久久久久久| 一区二区三区国产福利| 亚洲人体偷拍| 超碰在线免费av| 久久久精品中文字幕麻豆发布| 欧美做爰爽爽爽爽爽爽| 一本色道**综合亚洲精品蜜桃冫| 午夜精品一二三区| 中文字幕亚洲国产| 麻豆免费在线| 91在线精品观看| 欧美激情777| 日韩黄色片视频| 成人网在线播放| 91嫩草丨国产丨精品| 在线免费观看视频一区| 色欲av永久无码精品无码蜜桃| 啊v视频在线一区二区三区 | 成人性生活免费看| 亚洲视频免费在线观看| 中文字幕观看视频| 亚洲午夜精品视频| 美女在线视频免费| 国产传媒一区| 亚洲一区二区| 永久免费的av网站| 国产欧美日韩一区二区三区在线观看| 在线观看亚洲欧美| 亚洲精品大尺度| 成人超碰在线| 91久久久一线二线三线品牌| 91久久夜色精品国产按摩| 嫩草av久久伊人妇女超级a| 91色在线porny| 亚洲av中文无码乱人伦在线视色| 亚洲高清久久久久久| 久久青青色综合| 91青青草免费观看| 你懂的国产精品永久在线| 一级片黄色免费| 亚洲日本乱码在线观看| 国产一区二区小视频| 久久婷婷国产麻豆91天堂| 欧美日韩破处视频| 综合国产精品久久久| 久久99久久久欧美国产| 欧美爱爱免费视频| 日韩欧美综合一区| 欧美人与禽猛交乱配| www日韩av| 在线观看一区视频| 国产精品久久久久久久无码| 香蕉久久一区二区不卡无毒影院| 亚洲国产中文字幕在线| 国内揄拍国内精品| 日韩成人午夜| 男人搞女人网站| 亚洲天堂成人网| 精品久久在线观看| 久久久久国色av免费观看性色| 女人抽搐喷水高潮国产精品| 无码精品a∨在线观看中文| 久久久久9999亚洲精品| 日批视频免费观看| 久久九九免费视频| 粉嫩精品导航导航| www黄色av| 国产精品乱码妇女bbbb| 国产成人精品a视频| 亚洲3p在线观看| 精品国产乱码久久久久久蜜坠欲下 | 一区二区三区视频| 国产宾馆实践打屁股91| 国产视频91在线| 神马久久桃色视频| 亚洲视频一起| 日韩手机在线观看视频| 成人欧美一区二区三区1314 | 亚洲欧美激情一区| 天堂久久一区| 欧美成人高潮一二区在线看| 久久久99精品久久| av观看在线免费| 欧美中文在线字幕| 外国成人免费视频| 国产 中文 字幕 日韩 在线| 欧美色视频在线| av3级在线| 亚洲人成网站在线播放2019| 国产99一区视频免费| 中文字幕久久熟女蜜桃| 欧美精品videos另类日本| 欧美日韩精品在线一区| av在线天堂网| 欧美性大战久久久久久久| 久草在线视频福利| 亚洲精品一区二区三区樱花| 成人免费视频一区二区| 在线免费看av的网站| 8090成年在线看片午夜| 天天做天天爱综合| 精品成人无码一区二区三区| 亚洲电影av在线| 国内精品视频|