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

MCP 和 Function Calling:示例

開發(fā) 后端
本文以實際例子來加深對 MCP 和 Function Calling 的理解。實現(xiàn)這樣一個場景:和大模型聊天,然后讓大模型將回答的內(nèi)容總結(jié)后保存到 flomo 筆記中。

本文以實際例子來加深對 MCP 和 Function Calling 的理解。

實現(xiàn)這樣一個場景:和大模型聊天,然后讓大模型將回答的內(nèi)容總結(jié)后保存到 flomo 筆記中。

Function Calling

我們知道 Function Calling 和模型的能力有關,我使用的是 qwen2.5:7b 模型,用 ollama 在本地運行。

思路

  • 寫一個 api 接口,這個接口的作用將輸入的內(nèi)容存入 flomo 筆記中。
  • 利用 qwen-agent 框架來實現(xiàn) function calling ,最終調(diào)用自定義開發(fā)的 api 接口。

實現(xiàn)

api 接口使用任何語言都行,我這里使用的是 python 的 flask 框架。

@api_bp.route('/flomo/save', methods=['POST'])
def save_to_flomo():
    # 獲取請求數(shù)據(jù)
    data = request.get_json()
    
    # 驗證請求數(shù)據(jù)
    if not data or 'content' not in data:
        return jsonify({"error": "Missing required field: content"}), 400
    
    content = data['content']
    tags = data.get('tags', [])  # 可選的標簽列表
    
    # 驗證Flomo API URL是否配置
    flomo_api_url = current_app.config.get('FLOMO_API_URL')
    if not flomo_api_url:
        return jsonify({"error": "Flomo API URL not configured"}), 500
    
    try:
        # 準備發(fā)送到Flomo的數(shù)據(jù)
        flomo_data = {
            "content": content
        }
        
        # 如果有標簽,添加到內(nèi)容中
        if tags:
            # Flomo使用 #tag 格式的標簽
            tag_text = ' '.join([f"#{tag}" for tag in tags])
            flomo_data["content"] = f"{content}\n\n{tag_text}"
        
        # 發(fā)送請求到Flomo API
        headers = {
            'Content-Type': 'application/json'
        }
        
        response = requests.post(
            flomo_api_url,
            headers=headers,
            data=json.dumps(flomo_data),
            timeout=10  # 設置超時時間,處理大文本可能需要更長時間
        )
        
        # 檢查響應
        if response.status_code == 200:
            return jsonify({
                "message": "Content successfully saved to Flomo",
                "flomo_response": response.json()
            }), 200
        else:
            return jsonify({
                "error": "Failed to save to Flomo",
                "status_code": response.status_code,
                "response": response.text
            }), 500
            
    except requests.RequestException as e:
        # 處理請求異常
        return jsonify({
            "error": f"Request to Flomo failed: {str(e)}"
        }), 500
    except Exception as e:
        # 處理其他異常
        return jsonify({
            "error": f"Unexpected error: {str(e)}"
        }), 500

創(chuàng)建一個 qwen-client.py 的文件,內(nèi)容如下:

import json
import requests
from qwen_agent.llm import get_chat_model

def save_to_flomo(content):
    """Save content to Flomo notes"""
    try:
        api_url = "http://localhost:6500/api/flomo/save" 
        
        data = {"content": content}
        
        response = requests.post(
            api_url,
            headers={"Content-Type": "application/json"},
            json=data,
            timeout=10
        )
        
        if response.status_code == 200:
            print(f"Successfully saved to Flomo: {content}")
            return json.dumps(response.json())
        else:
            error_message = f"Failed to save to Flomo. Status code: {response.status_code}, Response: {response.text}"
            print(error_message)
            return json.dumps({"error": error_message})
            
    except Exception as e:
        error_message = f"Error calling Flomo API: {str(e)}"
        print(error_message)
        return json.dumps({"error": error_message})


def test(fncall_prompt_type: str = 'qwen'):
    llm = get_chat_model({
        'model': 'qwen2.5:7b',
        'model_server': 'http://localhost:11434/v1',
        'api_key': "",
        'generate_cfg': {
            'fncall_prompt_type': fncall_prompt_type
        }
    })

    # 第1步:將對話和可用函數(shù)發(fā)送給模型
    messages = [{'role': 'user', 'content': "怎么學習軟件架構(gòu),總結(jié)為三點,保存到筆記"}]
    functions = [{
        'name': 'save_to_flomo',
        'description': '保存內(nèi)容到Flomo筆記',
        'parameters': {
            'type': 'object',
            'properties': {
                'content': {
                    'type': 'string',
                    'description': '內(nèi)容',
                }
            },
            'required': ['content'],
        },
    }]

    responses = []
    for responses in llm.chat(
            messages=messages,
            functions=functions,
            stream=False,  
    ):
        print(responses)

    # 如果使用stream=False,responses直接是結(jié)果,不需要循環(huán)
    if isinstance(responses, list):
        messages.extend(responses) 
    else:
        messages.append(responses) 

    # 第2步:檢查模型是否想要調(diào)用函數(shù)
    last_response = messages[-1]
    if last_response.get('function_call', None):
        # 第3步:調(diào)用函數(shù)
        available_functions = {
            'save_to_flomo': save_to_flomo,
        }
        function_name = last_response['function_call']['name']
        function_to_call = available_functions[function_name]
        function_args = json.loads(last_response['function_call']['arguments'])
        function_response = function_to_call(
            content=function_args.get('content'),
        )
        print('# Function Response:')
        print(function_response)

        # 第4步:發(fā)送每個函數(shù)調(diào)用和函數(shù)響應到模型,讓大模型返回最終的結(jié)果
        messages.append({
            'role': 'function',
            'name': function_name,
            'content': function_response,
        }) 

        for responses in llm.chat(
                messages=messages,
                functions=functions,
                stream=False,
        ): 
            print(responses)

if __name__ == '__main__':
    test()
  • save_to_flomo 方法就是大模型需要用到的函數(shù),函數(shù)中調(diào)用第一步寫的接口,將內(nèi)容存儲到 flomo 筆記中。
  • test 方法中首先進行初始化,http://localhost:11434/v1 是本地通過 ollama 運行 qwen2.5:7b 模型的地址。
  • 后面的步驟在上面代碼中寫有注釋。

在 qwen_client.py  所在目錄執(zhí)行下面的命令安裝 qweb-agent 框架:

pip install -U "qwen-agent[gui,rag,code_interpreter,mcp]"

執(zhí)行 python qwen_client.py 運行程序。

檢查 flomo 客戶端,可以看到內(nèi)容已經(jīng)存儲進來了。

MCP

MCP 的使用,可以自己開發(fā)服務端,也可以使用 MCP 服務站的服務,比如 mcp.so 。客戶端有很多,比如:Windsurf、Cursor、CherryStudio 等。

Windsurf 中使用 MCP

先在 mcp.so 中找到 flomo 的 Server 。

連接 Server 的方式選擇了 Original 。

在 Windsurf 中的 MCP 設置中添加 flomo 的 Server 。

配置好后,在 chat 模式下進行提問:“根據(jù)最新的內(nèi)容對比下 mcp 和 A2A,將結(jié)果存儲到筆記中”。

Windsurf 一通查詢,整理后,調(diào)用 MCP 工具,將結(jié)果存到我的 flomo 中了。

代碼示例

很久沒用 dotnet 了,這個例子就用 dotnet 來實現(xiàn)吧。

工具和環(huán)境:

  • dotnet:8.0
  • ModelContextProtocol:0.1.0-preview.8
  • 工具:Windsurf

創(chuàng)建 mcp-server 控制臺項目,Program 代碼如下:

using Microsoft.Extensions.Hosting;
using ModelContextProtocol;
using Microsoft.Extensions.DependencyInjection;
using FlomoMcpServer;

try
{
  Console.WriteLine("啟動 MCP 服務...");

  var builder = Host.CreateEmptyApplicationBuilder(settings: null);
  builder.Services
    .AddMcpServer()
    .WithStdioServerTransport()
    .WithToolsFromAssembly();


  await builder.Build().RunAsync();
}
catch (Exception)
{
  Console.WriteLine("啟動 MCP 服務失敗");
}

添加 flomo 工具類 FlomoTools.cs ,內(nèi)容如下:

using ModelContextProtocol.Server;
using System.ComponentModel;

namespace FlomoMcpServer
{
    [McpServerToolType]
    public static class FlomoTools
    {
        [McpServerTool]
        [Description("寫筆記到 Flomo")]
        public static async Task WriteNote(string content)
        {
            Console.WriteLine("寫筆記到 Flomo...");
            if (string.IsNullOrEmpty(content))
            {
                throw new ArgumentNullException("content");
            }

            var apiUrl = "https://flomoapp.com/iwh/xxxxxxxxxxxxx/";

            using (var httpClient = new HttpClient())
            {
                var payload = new { content = content };
                var json = System.Text.Json.JsonSerializer.Serialize(payload);
                var httpContent = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
                var response = await httpClient.PostAsync(apiUrl, httpContent);
                response.EnsureSuccessStatusCode();
            }

            Console.WriteLine("寫筆記到 Flomo 完成");
        }
    }
}

創(chuàng)建 mcp-client 控制臺項目,Program 代碼如下:

using ModelContextProtocol.Client;
using ModelContextProtocol.Protocol.Transport;
using System.Collections.Generic;

var clientTransport = new StdioClientTransport(new StdioClientTransportOptions
{
    Name = "flomo",
    Command = "dotnet",
    Arguments = new[] { "/Users/fengwei/Projects/ai-demo/dotnet-mcp-demo/mcp-server/bin/Debug/net8.0/mcp-server.dll" }
});

await using var client = await McpClientFactory.CreateAsync(clientTransport);

var tools = await client.ListToolsAsync();
foreach (var tool in tools)
{
    Console.WriteLine($"{tool.Name}: {tool.Description}");
}

上面例子中使用的是本地 Stdio 的模式。通過 client.ListToolsAsync(); 獲取 MCP 服務中的所有工具,并打印出來。執(zhí)行效果如下:

client 的 Program 中繼續(xù)添加下面代碼進行直接的 Server 端方法調(diào)用,來測試下 client 和 server 是否是連通的。

var result = await client.CallToolAsync("WriteNote", new Dictionary<string, object?>
{
    ["content"] = "Hello, oec2003!"
});
Console.WriteLine($"Result: {result}");

執(zhí)行完后,如果 flomo 中筆記插入正常,說明調(diào)用成功。

接著調(diào)用本地 ollama 運行的大模型來實現(xiàn)跟大模型對話,然后將對話結(jié)果保存到 flomo 。Client 端的 Program 完整代碼如下:

using Microsoft.Extensions.Hosting;
using ModelContextProtocol;
using ModelContextProtocol.Client;
using ModelContextProtocol.Protocol.Transport;
using Microsoft.Extensions.DependencyInjection;
using System.Text;
using System.Text.Json;
using System.Net.Http;
using System.Net.Http.Json;
using Microsoft.Extensions.AI;
using OpenAI;
using System.ClientModel;

Console.WriteLine("啟動 MCP 客戶端...");

var clientTransport = new StdioClientTransport(new StdioClientTransportOptions
{
    Name = "flomo",
    Command = "dotnet",
    Arguments = new[] { "/Users/fengwei/Projects/ai-demo/dotnet-mcp-demo/mcp-server/bin/Debug/net8.0/mcp-server.dll" }
});

await using var mcpClient = await McpClientFactory.CreateAsync(clientTransport);

Console.WriteLine("已連接到 MCP 服務器");
Console.WriteLine("可用工具:");
foreach (var tool in await mcpClient.ListToolsAsync())
{
    Console.WriteLine($"{tool.Name}: {tool.Description}");
}

// 配置硅基流動API參數(shù)
var apiKeyCredential = new ApiKeyCredential("xx");
var aiClientOptions = new OpenAIClientOptions();
aiClientOptions.Endpoint = new Uri("http://localhost:11434/v1");
var aiClient = new OpenAIClient(apiKeyCredential, aiClientOptions)
    .AsChatClient("qwen2.5:7b");

var chatClient = new ChatClientBuilder(aiClient)
    .UseFunctionInvocation()
    .Build();

var mcpTools = await mcpClient.ListToolsAsync();
var chatOptions = new ChatOptions() {
    Tools = [..mcpTools]
};

Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"助手> 請輸入想要記錄的內(nèi)容,AI總結(jié)后會存入筆記");
while (true)
{
    Console.ForegroundColor = ConsoleColor.White;
    Console.Write("用戶> ");
    var question = Console.ReadLine();
    
    if (!string.IsNullOrWhiteSpace(question) && question.ToUpper() == "EXIT")
        break;

    var messages = new List<ChatMessage> {
        new(ChatRole.System, "你是一個筆記助手,請將用戶的輸入總結(jié)為簡潔的筆記形式,使用markdown格式。保留關鍵信息,刪除冗余內(nèi)容。"),
        new(ChatRole.User, question)
    };
    
    try 
    {
        var response = await chatClient.GetResponseAsync(messages, chatOptions);
        var content = response.ToString();
        Console.WriteLine($"助手> {content}");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"錯誤: {ex.Message}");
    }
    
    Console.WriteLine();
}

輸入 dotnet run 運行程序,結(jié)果如下:

責任編輯:姜華 來源: 不止dotNET
相關推薦

2025-04-01 08:45:56

2025-04-22 09:17:41

2025-07-10 02:25:00

2024-09-29 10:58:56

2023-10-30 17:36:08

OpenAIAPI插件

2025-11-12 09:01:49

2025-07-18 08:46:33

2025-10-15 01:44:00

MCPSSE通用協(xié)議

2025-07-22 01:55:00

2025-03-31 00:00:00

MCPAPI服務器通信

2025-03-21 09:00:00

2025-03-13 03:00:00

DockerAgentic工具

2023-05-29 09:18:28

.NET網(wǎng)絡通信

2025-07-31 09:02:21

2025-11-12 09:14:29

2023-02-24 07:42:30

Java動態(tài)代理

2022-01-25 18:11:55

vdomclassfunction

2025-04-02 10:06:00

2025-09-24 10:21:11

點贊
收藏

51CTO技術(shù)棧公眾號

国产精品无码一区二区三| 400部精品国偷自产在线观看| 国产性猛交╳xxx乱大交| 国产精品亚洲二区| 91麻豆精品91久久久久久清纯 | 亚洲人精品午夜| 国产传媒欧美日韩| 嫩草影院一区二区三区| 欧美精品啪啪| 亚洲丝袜在线视频| 精品伦一区二区三区| 欧美最新精品| 亚洲韩国一区二区三区| 天堂资源在线亚洲资源| 亚洲第一天堂网| 免费成人av在线播放| 久久久久久久激情视频| 一本在线免费视频| 日韩三区视频| 日韩美女视频一区二区在线观看| 男人操女人免费| 天使と恶魔の榨精在线播放| 国产日韩欧美不卡| 国产精品夜夜夜一区二区三区尤| 少妇又紧又色又爽又刺激视频| 欧美日韩一视频区二区| 中文字幕欧美日韩| 少妇饥渴放荡91麻豆| 成人网av.com/| 一本一道波多野结衣一区二区 | 一本久道久久综合狠狠爱| 日韩中文娱乐网| 久久久久久亚洲中文字幕无码| 免费看日产一区二区三区| 在线观看日韩电影| 欧美日韩亚洲一| 啦啦啦中文在线观看日本| 亚洲三级在线观看| 亚洲精品在线视频观看| 九九九伊在人线综合| 成人av网址在线| 成人动漫视频在线观看免费| 国产一区二区小视频| 日韩精品三区四区| 欧美在线国产精品| 中文字幕一区二区三区精品| 欧美精品一线| 九色精品免费永久在线| 亚洲一区电影在线观看| 三上亚洲一区二区| 在线视频免费一区二区| 欧美黄色激情视频| 精品久久中文| 在线看日韩欧美| 快灬快灬一下爽蜜桃在线观看| 久草在线成人| 夜夜嗨av一区二区三区四区| 一区二区三区在线观看免费视频| 宅男在线一区| 国产亚洲欧洲高清| 人妻互换一区二区激情偷拍| 99精品视频精品精品视频| 日韩在线免费高清视频| 色欲一区二区三区精品a片| 天天插综合网| 欧美精品一二区| 国产在线拍揄自揄拍| 国内精品美女在线观看| 性欧美亚洲xxxx乳在线观看| 久久久午夜影院| 欧美中文日韩| 国产精品视频午夜| 国产日本精品视频| 高清国产一区二区| 美女亚洲精品| gogogo高清在线观看免费完整版| 国产精品美女一区二区| 蜜臀在线免费观看| 99在线视频影院| 色综合色综合色综合色综合色综合| 久久精品99国产| 视频91a欧美| 欧美v日韩v国产v| 亚洲男人在线天堂| 欧美一二区在线观看| 久久精品青青大伊人av| 久久久精品国产sm调教网站| 国产精品综合色区在线观看| 国产精品xxxxx| 国产成人精品无码高潮| 91视频国产资源| 亚洲国产婷婷香蕉久久久久久99 | 久久久久久久一| 欧美a视频在线观看| 蜜桃av噜噜一区二区三区小说| 国产日韩欧美黄色| 天堂av资源网| 国产精品电影一区二区三区| 日韩xxxx视频| 国产第一精品| 日韩精品免费在线播放| 午夜精品久久久久99蜜桃最新版 | 婷婷精品在线观看| 久久精品影视伊人网| 黄网在线观看视频| 精品一区二区精品| 久久精品国产精品国产精品污 | 国内黄色精品| 色综合久久悠悠| 国产免费一级视频| 国产乱色国产精品免费视频| 欧美三级网色| 另类视频在线| 91精品欧美福利在线观看| 亚洲综合色一区| 亚洲网址在线| 91视频8mav| 国产专区在线| 婷婷综合五月天| 97免费公开视频| 日韩免费视频| 国产99久久精品一区二区永久免费 | 日韩精品在线免费观看| √天堂中文官网8在线| 久久国产毛片| 国产一区精品视频| 亚洲精品白浆| 91精品国产麻豆| 纪美影视在线观看电视版使用方法| 亚洲激情一区| 99中文字幕| 黄视频在线观看网站| 91久久奴性调教| 无码人妻精品一区二区三区温州 | 国产精品视频一区二区三区不卡| 日韩欧美一区二| 999国产精品一区| 久精品免费视频| 国产理论片在线观看| 中文字幕精品一区| 中文字幕在线观看第三页| 亚洲裸色大胆大尺寸艺术写真| 久久免费视频网站| www.97av| 一区二区高清免费观看影视大全| 亚洲妇熟xx妇色黄蜜桃| 欧美激情777| 国产免费久久av| 国产黄色片在线播放| 色妹子一区二区| 免费黄色在线视频| 日韩精品亚洲一区| 婷婷四房综合激情五月| 三级成人在线| 在线中文字幕日韩| 中文字幕av网站| 国产精品亲子乱子伦xxxx裸| 91插插插插插插插插| 色喇叭免费久久综合网| 国产有码一区二区| 性xxxxfjsxxxxx欧美| 精品国一区二区三区| 日韩精品一区三区| 久久网站热最新地址| 日日摸天天爽天天爽视频| 国产成人精品三级高清久久91| 日韩av免费在线播放| 国产女主播在线直播| 欧美日韩国产成人在线免费| 午夜成人亚洲理伦片在线观看| 美腿丝袜一区二区三区| 国产又爽又黄ai换脸| 久久久精品区| 国内精品小视频在线观看| 亚洲色欧美另类| 色婷婷av一区| 男人在线观看视频| 豆国产96在线|亚洲| 国产精品欧美激情在线观看| 青青草原综合久久大伊人精品| 国产在线精品一区免费香蕉| av资源在线看片| 亚洲人成电影网站色www| 国产精品久久久久久免费免熟| 亚洲靠逼com| 国产精品300页| 日韩影院精彩在线| 男女激烈动态图| 狼人精品一区二区三区在线 | 久久丝袜美腿综合| 蜜臀一区二区三区精品免费视频 | 欧美色图婷婷| 国产精品视频久久久| 精品一性一色一乱农村| 国产午夜精品免费一区二区三区| 国产精品爽爽久久| 欧美日韩国产中字| 男人晚上看的视频| 99精品欧美一区| 五月天婷婷亚洲| 国产欧美精品| 91精品国产毛片武则天| 日韩欧美影院| 成人自拍偷拍| 美女视频一区| 热久久美女精品天天吊色| 国产三区视频在线观看| 亚洲精品日韩久久久| 国产色在线视频| 91国内精品野花午夜精品| 青青草精品在线视频| 久久免费美女视频| 国产ts在线观看| 蜜桃av一区二区| 欧美日韩在线中文| 欧美黄色免费| 一区二区三区在线视频看| 欧美日韩直播| 国产精品久久久久久免费观看| 欧美亚洲综合视频| 日韩美女免费线视频| www.综合网.com| 久久av.com| 91在线观看| 亚洲人成免费电影| 香蕉视频免费在线看| 欧美一区二区久久久| 免费一级a毛片| 欧美日韩国产综合新一区| 免费无遮挡无码永久在线观看视频| 国产精品水嫩水嫩| 免费看的黄色网| 国产日韩成人精品| 蜜桃av免费看| 久久婷婷综合激情| 国产美女喷水视频| av不卡一区二区三区| 日本精品一二三| 国产成人精品一区二区三区四区| 搡的我好爽在线观看免费视频| 久久国产精品色| 欧美大尺度做爰床戏| 丝袜国产日韩另类美女| 久章草在线视频| 免费在线播放第一区高清av| 怡红院av亚洲一区二区三区h| 亚洲激情自拍| 免费成人在线视频网站| 国产亚洲综合精品| 国内性生活视频| 国产女优一区| 999香蕉视频| 人人狠狠综合久久亚洲| 国产免费又粗又猛又爽| 美日韩一区二区| 亚洲精品第三页| 国产最新精品精品你懂的| 在线免费看v片| 国产精品99精品久久免费| 中文字幕第六页| 粉嫩蜜臀av国产精品网站| 欲求不满的岳中文字幕| 91美女视频网站| 受虐m奴xxx在线观看| 国产视频一区在线观看| 国产精品视频在| 亚洲人吸女人奶水| 免费在线视频一区二区| 天天综合网 天天综合色| 欧美h在线观看| 欧美午夜精品久久久久久孕妇| 伊人久久亚洲综合| 日韩视频免费直播| 日韩一级片免费观看| 亚洲欧美国产va在线影院| 77777影视视频在线观看| 久久国产精品久久久| а√天堂8资源中文在线| 日本不卡视频在线播放| 久久久久毛片| 国产精品久久久久久久久久久久午夜片 | 日韩欧美国产一二三区| 少妇av一区二区| 亚洲午夜色婷婷在线| 性欧美ⅴideo另类hd| 国产成人精品一区二区| 精品三级久久久| 你懂的网址一区二区三区| 99久久九九| 免费在线激情视频| 国精品**一区二区三区在线蜜桃| 激情综合丁香五月| 亚洲天堂中文字幕| 毛片基地在线观看| 日韩一区二区中文字幕| 免费a在线观看| 欧美乱大交xxxxx另类电影| 日本免费一区二区三区四区| 亚洲精品免费av| 精品国产aⅴ| 男人插女人视频在线观看| 久久国产精品色| 久久久久久久久久久久| 亚洲一区二区三区精品在线| 少妇又紧又色又爽又刺激视频| 精品国产电影一区二区 | 欧美高清自拍一区| 成人黄色免费观看| 成人福利视频网站| 91网站免费视频| 亚洲午夜一区二区三区| 一区二区美女视频| 亚洲天堂免费在线| free性护士videos欧美| 91免费看片在线| 不卡中文字幕| 日本三级免费观看| 成人免费不卡视频| 在线免费日韩av| 欧美日韩免费观看一区二区三区| 五月天激情开心网| 欧美激情视频网站| 91精品视频一区二区| 欧美不卡三区| 国产日韩高清一区二区三区在线| 亚洲美女性囗交| 国产精品视频免费| 国产尤物在线视频| 亚洲精品美女久久久| 中文在线字幕免费观看| 国产精品久久久91| 狠狠色狠狠色综合婷婷tag| 18禁网站免费无遮挡无码中文| 国产精品乡下勾搭老头1| 亚洲欧美va天堂人熟伦 | 天天操天天舔天天射| 亚洲成人一区在线| 99草在线视频| 久久999免费视频| 亚洲欧美一级| 中文字幕一区二区三区最新 | 久草青青在线观看| 成人aa视频在线观看| 精品无码久久久久久久久| 欧美一区二区三区免费| av网址在线| 国产主播欧美精品| 精品欧美久久| 中国黄色片免费看| 国产蜜臀av在线一区二区三区| 无码人妻熟妇av又粗又大 | 国内三级在线观看| 日本精品一区二区三区在线| 欧美日韩麻豆| 久久人妻精品白浆国产| www久久精品| 中文字幕在线字幕中文| 精品国产乱码久久久久久1区2区 | 麻豆成人免费视频| 亚洲人av在线影院| 国产精品扒开腿做爽爽爽视频软件| 日韩aⅴ视频一区二区三区| 免费一区视频| a视频免费观看| 色悠悠久久综合| 国产裸舞福利在线视频合集| 国产成人极品视频| 欧洲三级视频| 91精品国产三级| 一区二区三区欧美久久| 天天摸夜夜添狠狠添婷婷| 91精品91久久久久久| 国内亚洲精品| 91丝袜超薄交口足| 亚洲成a人v欧美综合天堂 | 亚洲人在线视频| 成人免费在线观看视频| 丰满女人性猛交| 本田岬高潮一区二区三区| 91精品国产乱码在线观看| 精品中文字幕久久久久久| 激情欧美一区二区三区黑长吊| 一区二区视频在线播放| 成人一区二区三区中文字幕| 日本三级小视频| 久久精品男人天堂| 豆花视频一区二区| 国产色视频在线播放| 一区二区三区产品免费精品久久75| 国产精品欧美激情在线| 91国产精品91| 青青草91久久久久久久久| yjizz视频| 欧美影院午夜播放| av中文字幕电影在线看| 久久久久久久久久久久久久久久av| 久热成人在线视频| 久久久久久久久久久久国产| 亚洲深夜福利在线| 日韩国产在线不卡视频|