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

LangGraph × FastMCP 2.0 強(qiáng)強(qiáng)聯(lián)合:輕松構(gòu)建企業(yè)級(jí)AI工作流,效率翻倍! 原創(chuàng)

發(fā)布于 2025-9-8 07:00
瀏覽
1收藏

LangGraph 與 FastMCP 2.0(MCP 2.0)的結(jié)合,主要有兩種典型方式:

  • 客戶端集成:將 FastMCP 服務(wù)器暴露的工具、提示與資源,作為 LangGraph 工作流中的可調(diào)用節(jié)點(diǎn)(最常見(jiàn))。
  • 服務(wù)端封裝:把已有的 LangGraph Agent 封裝為 FastMCP 服務(wù)器,對(duì)外以標(biāo)準(zhǔn)協(xié)議提供能力(反向集成)。

客戶端集成

MCP 模擬服務(wù)

用于本地測(cè)試與調(diào)試的 MCP 2.0 模擬服務(wù)。

以下示例基于 FastMCP 2.0 編寫(xiě)。

uv add fastmcp

示例代碼

最基礎(chǔ)的算術(shù)工具:

from fastmcp import FastMCP

mcp = FastMCP("MyServer")

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

@mcp.tool()
def multiply(a: int, b: int) -> int:
    """Multiply two numbers"""
    return a * b

if __name__ == "__main__":
    # Start an HTTP server on port 8000
    mcp.run(transport="http", host="127.0.0.1", port=8000)
uv run concepts-mcp/mcp_server_sample.py

運(yùn)行后,控制臺(tái)將輸出:

╭────────────────────────────────────────────────────────────────────────────╮
│                                                                            │
│        _ __ ___  _____           __  __  _____________    ____    ____     │
│       _ __ ___ .'____/___ ______/ /_/  |/  / ____/ __ \  |___ \  / __ \    │
│      _ __ ___ / /_  / __ `/ ___/ __/ /|_/ / /   / /_/ /  ___/ / / / / /    │
│     _ __ ___ / __/ / /_/ (__  ) /_/ /  / / /___/ ____/  /  __/_/ /_/ /     │
│    _ __ ___ /_/    \____/____/\__/_/  /_/\____/_/      /_____(*)____/      │
│                                                                            │
│                                                                            │
│                                FastMCP  2.0                                │
│                                                                            │
│                                                                            │
│               ???  Server name:     MyServer                                 │
│               ?? Transport:       Streamable-HTTP                          │
│               ?? Server URL:      http://127.0.0.1:8000/mcp                │
│                                                                            │
│               ???  FastMCP version: 2.12.0                                   │
│               ?? MCP SDK version: 1.13.1                                   │
│                                                                            │
│               ?? Docs:            https://gofastmcp.com                    │
│               ?? Deploy:          https://fastmcp.cloud                    │
│                                                                            │
╰────────────────────────────────────────────────────────────────────────────╯


[09/01/25 22:54:03] INFO     Starting MCP server 'MyServer' with transport 'http' on                      server.py:1571
                             http://127.0.0.1:8000/mcp
INFO:     Started server process [24590]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

驗(yàn)證功能

安裝并啟動(dòng) MCP Inspector 使用 npm 安裝 MCP Inspector:

npm install -g @modelcontextprotocol/inspector

或者,你可以直接使用npx運(yùn)行Inspector,無(wú)需全局安裝:

npx @modelcontextprotocol/inspector

啟動(dòng)后,Inspector 將在瀏覽器中打開(kāi),默認(rèn)地址為 http://127.0.0.1:6274。

npx @modelcontextprotocol/inspector
Starting MCP inspector...
?? Proxy server listening on 127.0.0.1:6277
?? Session token: ab9f8a6edafccaa8a276b5bfebfc1d4t0fe486b14b5b42208d11d777cd7f17b4
Use this token to authenticate requests or set DANGEROUSLY_OMIT_AUTH=true to disable auth

?? Open inspector with token pre-filled:
   http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=ab9f8a6edafccaa8a276b5bfebfc1d4t0fe486b14b5b42208d11d777cd7f17b4

?? MCP Inspector is up and running at http://127.0.0.1:6274 ??

模擬服務(wù)啟動(dòng)后,Inspector 會(huì)自動(dòng)發(fā)現(xiàn)并展示 MyServer 服務(wù)器的全部工具。

LangGraph × FastMCP 2.0 強(qiáng)強(qiáng)聯(lián)合:輕松構(gòu)建企業(yè)級(jí)AI工作流,效率翻倍!-AI.x社區(qū)

MCP Inspector

用于快速驗(yàn)證工具可用性,避免集成過(guò)程中的干擾項(xiàng)。

LangGraph 調(diào)用 MCP 服務(wù)

模型上下文協(xié)議(MCP)是一項(xiàng)開(kāi)放標(biāo)準(zhǔn),用于規(guī)范應(yīng)用如何向語(yǔ)言模型提供工具與上下文。借助 langchain-mcp-adapters,LangGraph 智能體可直接使用 MCP 服務(wù)器上定義的工具。

LangGraph × FastMCP 2.0 強(qiáng)強(qiáng)聯(lián)合:輕松構(gòu)建企業(yè)級(jí)AI工作流,效率翻倍!-AI.x社區(qū)

BAML

模型上下文協(xié)議 (MCP) (圖片源自 LangGraph )

安裝 langchain-mcp-adapters,使 LangGraph 能調(diào)用 MCP 工具。

uv add langchain-mcp-adapters
uv add langchain langchain-openai langchain-deepseek langgraph python-dotenv

工程根目錄添加 ??.env?? 文件

DEEPSEEK_API_KEY=sk-……

編寫(xiě)代碼 langgraph_use_mcp_as_client.py:

from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.chat_models import init_chat_model
from langgraph.graph import StateGraph, MessagesState, START, END
from langgraph.prebuilt import ToolNode

import os
from dotenv import load_dotenv

# 加載.env文件中的環(huán)境變量
load_dotenv()

# Initialize the model
model = init_chat_model(
    "deepseek-chat",  # 使用DeepSeek模型
    api_key=os.environ.get("DEEPSEEK_API_KEY")
)

# Set up MCP client
client = MultiServerMCPClient(
    {
        "math": {
            # make sure you start your math server on port 8000
            "url": "http://127.0.0.1:8000/mcp/",
            "transport": "streamable_http",
        }
    }
)

asyncdef main():
    # Get tools from MCP server
    print("\n=== 獲取MCP工具 ===")
    tools = await client.get_tools()
    print(f"可用工具: {[tool.name for tool in tools]}")
    for tool in tools:
        print(f"  - {tool.name}: {tool.description}")
    
    # Bind tools to model
    print("\n=== 綁定工具到模型 ===")
    model_with_tools = model.bind_tools(tools)
    print(f"已將 {len(tools)} 個(gè)工具綁定到模型")
    
    # Create ToolNode
    tool_node = ToolNode(tools)
    
    def should_continue(state: MessagesState):
        messages = state["messages"]
        last_message = messages[-1]
        if last_message.tool_calls:
            return"tools"
        return END
    
    # Define call_model function
    asyncdef call_model(state: MessagesState):
        messages = state["messages"]
        print("\n=== 調(diào)用LLM模型 ===")
        print(f"輸入消息數(shù)量: {len(messages)}")
        if messages:
            print(f"最新消息: {messages[-1].content if hasattr(messages[-1], 'content') else str(messages[-1])}")
        
        response = await model_with_tools.ainvoke(messages)
        print(f"模型響應(yīng)類(lèi)型: {type(response).__name__}")
        if hasattr(response, 'content'):
            print(f"響應(yīng)內(nèi)容: {response.content}")
        if hasattr(response, 'tool_calls') and response.tool_calls:
            print(f"工具調(diào)用: {len(response.tool_calls)} 個(gè)")
            for i, tool_call in enumerate(response.tool_calls):
                print(f"  工具 {i+1}: {tool_call['name']} - 參數(shù): {tool_call['args']}")
        
        return {"messages": [response]}
    
    # Build the graph
    print("\n=== 構(gòu)建LangGraph工作流 ===")
    builder = StateGraph(MessagesState)
    builder.add_node("call_model", call_model)
    builder.add_node("tools", tool_node)
    print("已添加節(jié)點(diǎn): call_model (模型調(diào)用) 和 tools (工具執(zhí)行)")
    
    builder.add_edge(START, "call_model")
    builder.add_conditional_edges(
        "call_model",
        should_continue,
    )
    builder.add_edge("tools", "call_model")
    
    # Compile the graph
    graph = builder.compile()
    
    # Test the graph
    print("\n=== 開(kāi)始測(cè)試數(shù)學(xué)計(jì)算 ===")
    test_question = "what's (3 + 5) x 12?"
    print(f"測(cè)試問(wèn)題: {test_question}")
    
    math_response = await graph.ainvoke(
        {"messages": [{"role": "user", "content": test_question}]}
    )
    
    print("\n=== 最終結(jié)果 ===")
    print(f"消息鏈長(zhǎng)度: {len(math_response['messages'])}")
    for i, msg in enumerate(math_response['messages']):
        msg_type = type(msg).__name__
        if hasattr(msg, 'content'):
            print(f"消息 {i+1} ({msg_type}): {msg.content}")
        else:
            print(f"消息 {i+1} ({msg_type}): {str(msg)}")

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

測(cè)試結(jié)果

MCP 服務(wù)器:已在 http://127.0.0.1:8000/mcp/ 成功運(yùn)行,提供 add 與 multiply 工具。

MCP 客戶端:已成功連接到服務(wù)器并完成數(shù)學(xué)計(jì)算測(cè)試。

  • 問(wèn)題:"what's (3 + 5) x 12?"
  • 結(jié)果:正確計(jì)算出答案 96
  • 過(guò)程:先調(diào)用 add(3, 5) 得到 8,再調(diào)用 multiply(8, 12) 得到 96

實(shí)際運(yùn)行效果

通過(guò)運(yùn)行測(cè)試,可看到完整的計(jì)算流程:

  1. 問(wèn)題輸入:"what's (3 + 5) x 12?"
  2. 第一次 LLM 調(diào)用:模型決定先計(jì)算加法,調(diào)用 add(3, 5)
  3. 工具執(zhí)行:MCP 服務(wù)器返回結(jié)果 8
  4. 第二次 LLM 調(diào)用:模型繼續(xù)計(jì)算乘法,調(diào)用 multiply(8, 12)
  5. 工具執(zhí)行:MCP 服務(wù)器返回結(jié)果 96
  6. 第三次 LLM 調(diào)用:模型總結(jié)最終答案

=== 獲取MCP工具 ===
可用工具: ['add', 'multiply']
  - add: Add two numbers
  - multiply: Multiply two numbers

=== 綁定工具到模型 ===
已將 2 個(gè)工具綁定到模型

=== 構(gòu)建LangGraph工作流 ===
已添加節(jié)點(diǎn): call_model (模型調(diào)用) 和 tools (工具執(zhí)行)

=== 開(kāi)始測(cè)試數(shù)學(xué)計(jì)算 ===
測(cè)試問(wèn)題: what's (3 + 5) x 12?

=== 調(diào)用LLM模型 ===
輸入消息數(shù)量: 1
最新消息: what's (3 + 5) x 12?
模型響應(yīng)類(lèi)型: AIMessage
響應(yīng)內(nèi)容: I'll help you calculate (3 + 5) × 12. Let me break this down step by step.
工具調(diào)用: 1 個(gè)
  工具 1: add - 參數(shù): {'a': 3, 'b': 5}

=== 調(diào)用LLM模型 ===
輸入消息數(shù)量: 3
最新消息: 8
模型響應(yīng)類(lèi)型: AIMessage
響應(yīng)內(nèi)容: Now I'll multiply the result (8) by 12:
工具調(diào)用: 1 個(gè)
  工具 1: multiply - 參數(shù): {'a': 8, 'b': 12}

=== 調(diào)用LLM模型 ===
輸入消息數(shù)量: 5
最新消息: 96
模型響應(yīng)類(lèi)型: AIMessage
響應(yīng)內(nèi)容: The result of (3 + 5) × 12 is **96**. 

Here's the calculation:
- First, 3 + 5 = 8
- Then, 8 × 12 = 96

=== 最終結(jié)果 ===
消息鏈長(zhǎng)度: 6
消息 1 (HumanMessage): what's (3 + 5) x 12?
消息 2 (AIMessage): I'll help you calculate (3 + 5) × 12. Let me break this down step by step.
消息 3 (ToolMessage): 8
消息 4 (AIMessage): Now I'll multiply the result (8) by 12:
消息 5 (ToolMessage): 96
消息 6 (AIMessage): The result of (3 + 5) × 12 is **96**. 

Here's the calculation:
- First, 3 + 5 = 8
- Then, 8 × 12 = 96

服務(wù)端封裝

方案概覽

本節(jié)演示如何將已有的 LangGraph 工作流封裝為一個(gè) FastMCP 服務(wù)器,對(duì)外以 MCP 標(biāo)準(zhǔn)協(xié)議提供能力。 核心思路是:在 FastMCP 中注冊(cè)一個(gè)工具(process_text_with_langgraph),其內(nèi)部調(diào)用 LangGraph 的工作流,實(shí)現(xiàn)“預(yù)處理 → AI 分析 → 結(jié)果匯總”的端到端處理。

#!/usr/bin/env python3
"""
簡(jiǎn)化的 FastMCP + LangGraph 演示
展示如何在FastMCP中集成LangGraph工作流
"""

import asyncio
import os
from typing import TypedDict, List
from datetime import datetime

from fastmcp import FastMCP, Context
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import MemorySaver
from langchain_core.messages import HumanMessage, AIMessage
from langchain_deepseek import ChatDeepSeek
from langchain_core.prompts import ChatPromptTemplate

# 加載環(huán)境變量
from dotenv import load_dotenv
load_dotenv()

# 定義簡(jiǎn)單的狀態(tài)類(lèi)型
class TextProcessState(TypedDict):
    input_text: str
    processed_text: str
    ai_response: str
    steps: List[str]

# 初始化DeepSeek模型
model = ChatDeepSeek(
    model="deepseek-chat",
    api_key=os.getenv("DEEPSEEK_API_KEY"),
    temperature=0.7
)

# 創(chuàng)建FastMCP實(shí)例
mcp = FastMCP("Simple-FastMCP-LangGraph")

def create_text_processing_graph():
    """創(chuàng)建文本處理的LangGraph工作流"""
    
    asyncdef preprocess_text(state: TextProcessState) -> TextProcessState:
        """預(yù)處理文本"""
        input_text = state["input_text"]
        
        # 簡(jiǎn)單的預(yù)處理:去除多余空格,添加時(shí)間戳
        processed = input_text.strip()
        timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        
        return {
            **state,
            "processed_text": processed,
            "steps": state["steps"] + [f"文本預(yù)處理完成 ({timestamp})"]
        }
    
    asyncdef generate_ai_response(state: TextProcessState) -> TextProcessState:
        """生成AI響應(yīng)"""
        processed_text = state["processed_text"]
        
        prompt = ChatPromptTemplate.from_messages([
            ("system", "你是一個(gè)專(zhuān)業(yè)的文本分析助手。請(qǐng)對(duì)用戶提供的文本進(jìn)行分析和總結(jié),提供有價(jià)值的見(jiàn)解。"),
            ("human", "請(qǐng)分析以下文本:\n\n{text}\n\n請(qǐng)?zhí)峁?) 主要內(nèi)容總結(jié) 2) 關(guān)鍵信息提取 3) 簡(jiǎn)短評(píng)價(jià)")
        ])
        
        try:
            response = await model.ainvoke(prompt.format_messages(text=processed_text))
            ai_content = response.content
        except Exception as e:
            ai_content = f"AI處理出錯(cuò): {str(e)}"
        
        return {
            **state,
            "ai_response": ai_content,
            "steps": state["steps"] + ["AI分析完成"]
        }
    
    # 構(gòu)建工作流圖
    workflow = StateGraph(TextProcessState)
    
    # 添加節(jié)點(diǎn)
    workflow.add_node("preprocess", preprocess_text)
    workflow.add_node("ai_analyze", generate_ai_response)
    
    # 添加邊
    workflow.add_edge(START, "preprocess")
    workflow.add_edge("preprocess", "ai_analyze")
    workflow.add_edge("ai_analyze", END)
    
    # 編譯圖
    memory = MemorySaver()
    return workflow.compile(checkpointer=memory)

# 創(chuàng)建全局的LangGraph實(shí)例
text_processor = create_text_processing_graph()

@mcp.tool()
asyncdef process_text_with_langgraph(text: str, ctx: Context = None) -> str:
    """
    使用LangGraph處理文本
    
    Args:
        text: 要處理的文本內(nèi)容
    
    Returns:
        處理結(jié)果
    """
    returnawait _analyze_text(text, ctx)

# 原始工具函數(shù)(不使用裝飾器)
asyncdef _analyze_text(text: str, ctx = None) -> str:
    """內(nèi)部文本分析函數(shù)"""
    if ctx:
        await ctx.info(f"開(kāi)始分析文本: {text[:30]}...")
    
    try:
        # 初始狀態(tài)
        initial_state = {
            "input_text": text,
            "processed_text": "",
            "ai_response": "",
            "steps": []
        }
        
        # 配置
        config = {
            "configurable": {
                "thread_id": f"analyze_{datetime.now().strftime('%Y%m%d_%H%M%S_%f')}"
            }
        }
        
        if ctx:
            await ctx.info("執(zhí)行LangGraph工作流...")
        
        # 運(yùn)行工作流
        final_state = await text_processor.ainvoke(initial_state, config)
        
        if ctx:
            await ctx.info("分析完成")
        
        # 格式化結(jié)果
        result = f"""?? 文本分析結(jié)果

?? 原始文本:
{final_state['input_text']}

?? AI分析:
{final_state['ai_response']}

?? 處理步驟:
{' → '.join(final_state['steps'])}

? 完成時(shí)間: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"""
        
        return result
        
    except Exception as e:
        error_msg = f"文本分析失敗: {str(e)}"
        if ctx:
            await ctx.error(error_msg)
        return error_msg

if __name__ == "__main__":
    import sys
    
    # 服務(wù)器模式
    print("?? 啟動(dòng) Simple FastMCP + LangGraph 服務(wù)器")
    print("?? 可用工具:")
    print("   - process_text_with_langgraph: 使用LangGraph處理文本")
    print("?? 服務(wù)器地址: http://127.0.0.1:8004/mcp")
    print("?? 測(cè)試命令: python simple_fastmcp_demo.py --test")
    print("=" * 60)
    
    mcp.run(
        transport="http",
        host="127.0.0.1",
        port=8004,
        log_level="info"
    )

啟動(dòng)與驗(yàn)證
在啟動(dòng)前,請(qǐng)確保已在項(xiàng)目根目錄配置 .env 并設(shè)置 DEEPSEEK_API_KEY。

運(yùn)行代碼
```Shell
uv run langgraph_use_mcp_as_server.py

啟動(dòng)成功后,可使用 MCP Inspector 連接 http://127.0.0.1:8004/mcp,界面中將自動(dòng)發(fā)現(xiàn)并展示工具 process_text_with_langgraph。 選擇該工具,輸入任意文本(例如“請(qǐng)分析這段關(guān)于 LangGraph 與 FastMCP 集成的描述,給出要點(diǎn)與建議”)進(jìn)行調(diào)用。 工具將返回結(jié)構(gòu)化的文本結(jié)果,包括:

  • 原始文本:回顯你輸入的內(nèi)容;
  • AI 分析:模型基于提示模版給出的總結(jié)、關(guān)鍵信息與評(píng)價(jià);
  • 處理步驟:包含“文本預(yù)處理完成(時(shí)間戳)→ AI 分析完成”的流水;
  • 完成時(shí)間:本次處理的結(jié)束時(shí)間戳。

通過(guò) Inspector 調(diào)用新增的 MCP 服務(wù)器,注意需要調(diào)整超時(shí)時(shí)間

LangGraph × FastMCP 2.0 強(qiáng)強(qiáng)聯(lián)合:輕松構(gòu)建企業(yè)級(jí)AI工作流,效率翻倍!-AI.x社區(qū)

運(yùn)行結(jié)果說(shuō)明

  • 服務(wù)器地址:http://127.0.0.1:8004/mcp(HTTP 傳輸,F(xiàn)astMCP 會(huì)輸出啟動(dòng)日志)。
  • 可用工具:process_text_with_langgraph(用于對(duì)文本進(jìn)行預(yù)處理與 AI 分析)。
  • 成功調(diào)用后:在 Inspector 中可看到該工具的響應(yīng)正文,包含“原始文本 / AI 分析 / 處理步驟 / 完成時(shí)間”等字段;若輸入較長(zhǎng)文本,處理步驟會(huì)顯示帶時(shí)間戳的進(jìn)度信息,便于排查與復(fù)現(xiàn)。


本文轉(zhuǎn)載自??AI 博物院?? 作者:longyunfeigu

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
已于2025-9-8 07:00:33修改
收藏 1
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
成人影音在线| 秋霞欧美在线观看| 天天av综合| 日韩欧美一级片| 久久综合色视频| 77导航福利在线| 成人免费视频app| 国产精品成人免费电影| 欧洲第一无人区观看| 欧美电影免费网站| 欧美日韩国产天堂| 国产主播自拍av| 午夜老司机在线观看| 成人精品视频一区| 成人疯狂猛交xxx| 中文字幕在线观看视频网站| 久久视频在线| 亚洲男人天堂九九视频| 中文字幕乱妇无码av在线| 超碰aⅴ人人做人人爽欧美| 亚洲欧洲精品一区二区三区不卡| 精品国产乱码久久久久久蜜柚| 怡春院在线视频| 99热这里只有成人精品国产| 欧美成人精品在线视频| 丁香花五月婷婷| 女人抽搐喷水高潮国产精品| 91精品欧美久久久久久动漫 | 精品成人av一区| 午夜啪啪免费视频| 国产高清视频免费最新在线| 99久久婷婷国产| 国产chinese精品一区二区| 亚洲视频在线免费播放| 久久三级视频| 538国产精品视频一区二区| 久草视频中文在线| 久久久久久久久久久久久久| 国产一区二区三区在线视频| 国产精品无码一区二区三区免费| 911精品国产| 日韩你懂的电影在线观看| gai在线观看免费高清| 韩日一区二区| 在线观看视频一区| 成人在线看视频| 成人片免费看| 欧美日韩一区二区在线播放| 成人性生活视频免费看| 色yeye免费人成网站在线观看| 亚洲人成伊人成综合网小说| 欧美日韩一区二区三区电影| 日本在线观看网站| 中文字幕av在线一区二区三区| 日韩欧美一区二区三区四区五区| 国产乱视频在线观看| 久久久久久久久久看片| 欧美日韩综合久久| 国产人成在线视频| 国产精品丝袜在线| 一区二区在线观| 国产鲁鲁视频在线观看特色| 亚洲欧美经典视频| 小泽玛利亚av在线| 另类视频在线| 精品久久久久久久久久国产| 国产午夜伦鲁鲁| 神马电影网我不卡| 欧美三级日韩三级国产三级| 色综合色综合色综合色综合| 欧美成人xxxx| 日韩一区二区三区在线视频| 性活交片大全免费看| 精品中国亚洲| 国产小视频91| 欧美黄色aaa| 一区福利视频| 日韩美女av在线免费观看| 最近中文字幕av| 国模少妇一区二区三区| 91亚洲精品丁香在线观看| 日批视频免费播放| 国产网红主播福利一区二区| 伊人久久大香线蕉av一区| 亚洲按摩av| 日韩欧美精品网站| 国产wwwxx| 久久久国产精品入口麻豆| 亚洲国产一区二区三区四区| 亚洲理论片在线观看| 亚洲精品a级片| 91超碰caoporn97人人| 中文字幕精品在线观看| 国产成人av影院| 精品一区在线播放| 欧美成人高清在线| 偷偷要91色婷婷| 特黄视频免费观看| 欧美日韩直播| 免费97视频在线精品国自产拍| 国产亚洲欧美久久久久| 日韩av一区二| 国产精品果冻传媒潘| 国产人成在线观看| 亚洲国产欧美另类丝袜| 一区二区三区 欧美| 国产精品宾馆| 久久精品欧美视频| 欧美国产成人精品一区二区三区| 精品一区免费av| 久久久久成人精品免费播放动漫| 麻豆网站在线| 91福利国产成人精品照片| 日本人dh亚洲人ⅹxx| 精品国产成人| 97超级碰碰人国产在线观看| 国产精品无码天天爽视频| 久久久久久免费| 日本xxxxxxxxxx75| 国产精品一区三区在线观看| 亚洲欧美日韩直播| 久久久久久久久久99| 久久www免费人成看片高清| 精品无人区一区二区三区| 怡红院在线播放| 欧美喷水一区二区| 色一情一交一乱一区二区三区| 亚洲黄色成人| 国产精品午夜av在线| 岛国中文字幕在线| 欧美日本精品一区二区三区| 国产一二三四五区| 99热精品在线| 国产欧美一区二区视频| 人交獸av完整版在线观看| 欧美日韩国产精品自在自线| 色一情一交一乱一区二区三区| 国产精品日本| 久久精品久久精品国产大片| 丁香花视频在线观看| 日韩一级片在线观看| 成人高潮免费视频| 老司机精品视频一区二区三区| 日韩中文一区二区三区| 日韩成人动漫| 亚洲天堂男人天堂女人天堂| 69亚洲精品久久久蜜桃小说 | 亚洲一区二区久久久久久| av国产在线观看| 欧美性三三影院| 日韩av片在线免费观看| 久久er99精品| 亚洲最新免费视频| 四虎成人精品一区二区免费网站| 中文字幕在线看视频国产欧美在线看完整 | 天天摸夜夜添狠狠添婷婷| 午夜视频一区二区| 中文成人无字幕乱码精品区| 国产日韩精品视频一区二区三区 | 少妇性l交大片7724com| 自拍日韩欧美| 国产精华一区| 爱啪视频在线观看视频免费| 日韩激情av在线播放| 日韩精品一区二区亚洲av| 国产视频911| 最新天堂在线视频| 国内精品久久久久久久影视麻豆| 成人永久免费| a日韩av网址| 最近更新的2019中文字幕| 国产精品一级视频| 亚洲亚洲精品在线观看| 野花社区视频在线观看| 日韩av电影免费观看高清完整版| 一本久道久久综合狠狠爱亚洲精品| 亚洲国产精选| 97视频免费在线看| 成人精品一区二区三区免费| 这里只有精品免费| 国产五月天婷婷| 国产欧美日韩三级| 人妻换人妻仑乱| 国产精品综合色区在线观看| 亚洲欧洲久久| 在线日韩成人| 国产成人精品久久二区二区| 日本在线天堂| 日韩精品高清在线| 国产又粗又猛又黄| 亚洲成人激情av| 国产午夜精品久久久久久久久| 国产精品99久久久久久似苏梦涵 | 91精品论坛| 久久综合88中文色鬼| 十九岁完整版在线观看好看云免费| 欧美三级一区二区| 日韩成人高清视频| 国产精品久久夜| 亚洲av成人片色在线观看高潮 | 亚洲熟妇一区二区| 日韩高清中文字幕一区| 国产片侵犯亲女视频播放| 国产精品羞羞答答在线观看 | 亚洲黄色在线免费观看| 日本韩国欧美一区| 久久久www成人免费毛片| 国产日韩视频一区二区三区| 野战少妇38p| 久久se这里有精品| 日韩有码免费视频| 合欧美一区二区三区| 在线精品亚洲一区二区| 蜜臀av免费一区二区三区| 91久久在线观看| 韩国成人在线| 欧美亚洲伦理www| 色呦呦网站在线观看| 日韩有码在线播放| 韩国中文免费在线视频| 精品久久一二三区| 99视频国产精品免费观看a| 欧美私人免费视频| 久久精品一二区| 亚洲成人av资源| 在线观看成人毛片| 中文字幕字幕中文在线中不卡视频| 无码人妻精品一区二区三区温州| 国产成人精品三级| 色网站在线视频| 另类欧美日韩国产在线| 亚洲成色www.777999| 久久国产毛片| 黄色片久久久久| 国产精品日韩| 欧美韩国日本在线| 久久精品成人| 日本免费黄视频| 国产麻豆综合| 无码人妻丰满熟妇区毛片| av不卡在线看| 女人天堂av手机在线| 日韩午夜免费| 浮妇高潮喷白浆视频| 一区二区福利| 男人日女人bb视频| 国产精品普通话对白| 欧美成人精品欧美一级乱| 久久蜜桃精品| 欧美黄色性生活| 美女网站色91| 婷婷激情小说网| 国产99久久精品| 涩视频在线观看| aa级大片欧美| 久久只有这里有精品| 国产色一区二区| 91麻豆制片厂| 亚洲欧美日韩国产成人精品影院 | 欧美精品不卡| 青青在线免费观看| 性一交一乱一区二区洋洋av| 欧美成人精品欧美一级乱| 日韩av电影一区| 亚洲男人天堂2021| 成人午夜免费av| www.久久国产| 国产精品成人在线观看| 色欲人妻综合网| 亚洲成人高清在线| 免费黄色av片| 91精品欧美福利在线观看| 精品国产亚洲一区二区麻豆| 亚洲成人精品av| 极品美乳网红视频免费在线观看| 色噜噜狠狠狠综合曰曰曰88av| 国产精品一卡二卡三卡| 久久久久久久久久久国产| 亚洲欧美一区二区三区| 国产精品一二区| 试看120秒一区二区三区| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 在线一区二区视频| 国产人妻精品一区二区三| 亚洲成年网站在线观看| 国产精品久久一区二区三区不卡| 久热精品视频在线免费观看| 自由日本语热亚洲人| 成人免费网站在线观看| 美女一区2区| 一本色道久久综合亚洲精品婷婷| 国模吧视频一区| 福利在线一区二区三区| 国产精品18久久久久久久久 | 亚洲a级黄色片| 成人三级伦理片| 国产免费嫩草影院| 五月天一区二区| 97国产精品久久久| 亚洲美女视频网站| 91小视频xxxx网站在线| 国产97在线播放| 好吊妞视频这里有精品 | avav免费在线观看| 久久人人爽人人爽人人片av高请| 外国电影一区二区| 国产一区精品视频| 一本一道久久a久久精品蜜桃| 青青草原av在线播放| 国产福利电影一区二区三区| 国产精品久久久视频| 午夜精品久久久久久久久久| 国产男男gay网站| 一区二区成人精品| 一根才成人网| 国产中文一区二区| 欧美一区二区三区另类| 亚洲美女性囗交| 欧美国产精品一区二区三区| 日韩免费视频一区二区视频在线观看| 91精品一区二区三区久久久久久 | 午夜精品小视频| 久久精品视频导航| 久久久成人av毛片免费观看| 久久久久免费网| 亚洲人成免费| 性高潮免费视频| 伊人色综合久久天天| 国产孕妇孕交大片孕| 中文综合在线观看| 日韩免费小视频| 欧美影视一区二区| 久久国产精品亚洲77777| 你懂的在线观看网站| 亚洲成人激情综合网| 色综合免费视频| 欧美精品999| 超碰在线亚洲| 亚洲精品久久久久久久蜜桃臀| 国产iv一区二区三区| 国产在线一卡二卡| 欧美一区日本一区韩国一区| 伦xxxx在线| 成人做爰www免费看视频网站| 久久网站免费观看| 亚洲午夜激情影院| 一区二区三区四区av| 成 人 免费 黄 色| 欧美精品久久久久a| 9l亚洲国产成人精品一区二三| 4444在线观看| 白白色亚洲国产精品| 天天插天天操天天干| 日韩国产精品一区| 欧美成人免费电影| 天天久久人人| 精品一区二区三区免费播放| 日本 欧美 国产| 日韩欧美中文一区二区| 123区在线| 日本高清视频一区二区三区| 日本午夜精品视频在线观看| 99成人在线观看| 日韩美女视频一区二区在线观看| 国产网红女主播精品视频| 精品一区在线播放| 免费成人美女在线观看.| 国产喷水在线观看| 欧美成人三级电影在线| 偷拍自拍在线看| 亚洲精品一区二区三区樱花 | 国产精品手机视频| 欧美亚洲视频| 91精品少妇一区二区三区蜜桃臀| 日韩欧美二区三区| 在线手机中文字幕| 亚洲一区二区三区乱码| 国产成人免费视频网站| 欧美日韩一二三四区| 日韩有码片在线观看| 久久婷婷国产| 玖玖爱视频在线| 亚洲超碰精品一区二区| 福利视频在线看| 成人国产1314www色视频| 久久精品成人| 欧美精品入口蜜桃| 国产亚洲人成网站在线观看| 久久久久久久久久久久电影| 99999精品视频| 成人欧美一区二区三区小说 | 久久蜜桃av一区精品变态类天堂| 中文字幕91爱爱| 欧美精品久久久久久久免费观看| 国产一区二区三区91| 一级黄色电影片| 欧美性做爰猛烈叫床潮| 91www在线| 欧美亚洲视频一区| 91老师国产黑色丝袜在线|