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

一萬字用Python從零搭建AI智能體 精華

發(fā)布于 2025-3-11 02:16
瀏覽
0收藏

在之前的Agent系列文章中,我們?nèi)娼榻B了AI智能體,探討了它們的特征、組成部分、發(fā)展歷程、面臨的挑戰(zhàn)以及未來的可能性。在這篇文章中,我們將深入探索如何使用Python從零開始構(gòu)建一個智能體。這個智能體將具備根據(jù)用戶輸入做出決策、選擇合適工具并相應(yīng)執(zhí)行任務(wù)的能力。現(xiàn)在,就讓我們開啟這個有趣的構(gòu)建之旅吧!

一、什么是智能體?

智能體是一種能夠感知其所處環(huán)境、做出決策并采取行動以實(shí)現(xiàn)特定目標(biāo)的自主實(shí)體。智能體的復(fù)雜程度各不相同,從簡單的對刺激做出反應(yīng)的反應(yīng)式智能體,到能夠隨著時間推移進(jìn)行學(xué)習(xí)和適應(yīng)的更高級的智能體。常見的智能體類型包括:

  • 反應(yīng)式智能體:直接對環(huán)境變化做出反應(yīng),沒有內(nèi)部記憶。
  • 基于模型的智能體:利用對世界的內(nèi)部模型來做出決策。
  • 基于目標(biāo)的智能體:根據(jù)要實(shí)現(xiàn)的特定目標(biāo)來規(guī)劃行動。
  • 基于效用的智能體:基于效用函數(shù)評估潛在行動,以實(shí)現(xiàn)結(jié)果的最大化。

聊天機(jī)器人、推薦系統(tǒng)和自動駕駛汽車都是智能體的實(shí)際應(yīng)用例子,它們各自利用不同類型的智能體來高效且智能地執(zhí)行任務(wù)。

我們構(gòu)建的智能體核心組件包括:

  • 模型:智能體的 “大腦”,負(fù)責(zé)處理輸入并生成響應(yīng)。
  • 工具:根據(jù)用戶請求,智能體可以執(zhí)行的預(yù)定義函數(shù)。
  • 工具箱:智能體可使用的工具集合。
  • 系統(tǒng)提示:指導(dǎo)智能體如何處理用戶輸入并選擇正確工具的指令集。

二、實(shí)現(xiàn)過程

現(xiàn)在,讓我們挽起袖子,開始動手構(gòu)建吧!

2.1 準(zhǔn)備工作

本教程的完整代碼可在AI智能體的GitHub倉庫中獲取。你可以在 “Build an Agent from Scratch” 這里找到具體實(shí)現(xiàn)。在運(yùn)行代碼之前,請確保你的系統(tǒng)滿足以下先決條件:

1. Python環(huán)境設(shè)置

運(yùn)行AI智能體需要安裝Python。按照以下步驟來設(shè)置你的環(huán)境:

  • 安裝Python(如果尚未安裝):從python.org下載并安裝Python(推薦3.8及以上版本)。
  • 驗(yàn)證安裝:在命令行中輸入??python --version??,查看是否正確安裝。
  • 創(chuàng)建虛擬環(huán)境(推薦):使用虛擬環(huán)境來管理依賴項是個不錯的選擇。在命令行中輸入??python -m venv ai_agents_env??創(chuàng)建虛擬環(huán)境,然后通過??source ai_agents_env/bin/activate??激活它。
  • 安裝所需依賴項:導(dǎo)航到代碼倉庫目錄,然后在命令行中輸入??pip install -r requirements.txt??來安裝所需的依賴庫。

2. 本地設(shè)置Ollama

Ollama用于高效地運(yùn)行和管理本地語言模型。按照以下步驟安裝和配置它:

  • 下載并安裝Ollama:訪問Ollama的官方網(wǎng)站,下載適合你操作系統(tǒng)的安裝程序,并按照平臺對應(yīng)的說明進(jìn)行安裝。
  • 驗(yàn)證Ollama安裝:在命令行中運(yùn)行??ollama --version??,檢查Ollama是否正確安裝。
  • 拉取模型(如有需要):有些智能體實(shí)現(xiàn)可能需要特定的模型。你可以使用??ollama pull mistral??命令拉取模型。

2.2 實(shí)現(xiàn)步驟

步驟1:設(shè)置環(huán)境

除了Python,我們還需要安裝一些必要的庫。在本教程中,我們將使用??requests???、??json???和??termcolor???庫。另外,我們會使用??dotenv???來管理環(huán)境變量。在命令行中輸入??pip install requests termcolor python-dotenv??進(jìn)行安裝。

步驟2:定義模型類

我們首先需要一個能夠處理用戶輸入的模型。我們將創(chuàng)建一個??OllamaModel??類,它通過與本地API進(jìn)行交互來生成響應(yīng)。以下是基本實(shí)現(xiàn)代碼:

from termcolor import colored
import os
from dotenv import load_dotenv
load_dotenv()
import requests
import json
import operator

class OllamaModel:
    def __init__(self, model, system_prompt, temperature=0, stop=None):
        """
        用給定的參數(shù)初始化OllamaModel。
        參數(shù):
        model (str): 要使用的模型名稱。
        system_prompt (str): 要使用的系統(tǒng)提示。
        temperature (float): 模型的溫度設(shè)置。
        stop (str): 模型的停止標(biāo)記。
        """
        self.model_endpoint = "http://localhost:11434/api/generate"
        self.temperature = temperature
        self.model = model
        self.system_prompt = system_prompt
        self.headers = {"Content-Type": "application/json"}
        self.stop = stop

    def generate_text(self, prompt):
        """
        根據(jù)提供的提示從Ollama模型生成響應(yīng)。
        參數(shù):
        prompt (str): 用于生成響應(yīng)的用戶查詢。
        返回:
        dict: 模型的響應(yīng),以字典形式返回。
        """
        payload = {
            "model": self.model,
            "format": "json",
            "prompt": prompt,
            "system": self.system_prompt,
            "stream": False,
            "temperature": self.temperature,
            "stop": self.stop
        }
        try:
            request_response = requests.post(
                self.model_endpoint,
                headers=self.headers,
                data=json.dumps(payload)
            )
            print("REQUEST RESPONSE", request_response)
            request_response_json = request_response.json()
            response = request_response_json['response']
            response_dict = json.loads(response)
            print(f"\n\nResponse from Ollama model: {response_dict}")
            return response_dict
        except requests.RequestException as e:
            response = {"error": f"Error in invoking model! {str(e)}"}
            return response

這個類使用模型名稱、系統(tǒng)提示、溫度和停止標(biāo)記進(jìn)行初始化。??generate_text??方法向模型API發(fā)送請求并返回響應(yīng)。

步驟3:為智能體創(chuàng)建工具

接下來是為我們的智能體創(chuàng)建可用的工具。這些工具是執(zhí)行特定任務(wù)的簡單Python函數(shù)。以下是一個基本計算器和字符串反轉(zhuǎn)器的示例:

def basic_calculator(input_str):
    """
    根據(jù)輸入字符串或字典對兩個數(shù)字執(zhí)行數(shù)值運(yùn)算。
    參數(shù):
    input_str (str或dict): 要么是表示包含'num1'、'num2'和'operation'鍵的字典的JSON字符串,
    要么是直接的字典。例如: '{"num1": 5, "num2": 3, "operation": "add"}'
    或{"num1": 67869, "num2": 9030393, "operation": "divide"}
    返回:
    str: 運(yùn)算的格式化結(jié)果。
    拋出:
    Exception: 如果在運(yùn)算過程中發(fā)生錯誤(例如,除以零)。
    ValueError: 如果請求了不支持的運(yùn)算或輸入無效。
    """
    try:
        if isinstance(input_str, dict):
            input_dict = input_str
        else:
            input_str_clean = input_str.replace("'", "\"")
            input_str_clean = input_str_clean.strip().strip("\"")
            input_dict = json.loads(input_str_clean)
        if not all(key in input_dict for key in ['num1', 'num2', 'operation']):
            return "Error: Input must contain 'num1', 'num2', and 'operation'"
        num1 = float(input_dict['num1'])
        num2 = float(input_dict['num2'])
        operation = input_dict['operation'].lower()
    except (json.JSONDecodeError, KeyError) as e:
        return "Invalid input format. Please provide valid numbers and operation."
    except ValueError as e:
        return "Error: Please provide valid numerical values."
    operations = {
        'add': operator.add,
        'plus': operator.add,
      'subtract': operator.sub,
      'minus': operator.sub,
      'multiply': operator.mul,
        'times': operator.mul,
        'divide': operator.truediv,
        'floor_divide': operator.floordiv,
      'modulus': operator.mod,
        'power': operator.pow,
        'lt': operator.lt,
        'le': operator.le,
        'eq': operator.eq,
        'ne': operator.ne,
        'ge': operator.ge,
        'gt': operator.gt
    }
    if operation not in operations:
        return f"Unsupported operation: '{operation}'. Supported operations are: {', '.join(operations.keys())}"
    try:
        if (operation in ['divide', 'floor_divide','modulus']) and num2 == 0:
            return "Error: Division by zero is not allowed"
        result = operations[operation](num1, num2)
        if isinstance(result, bool):
            result_str = "True" if result else "False"
        elif isinstance(result, float):
            result_str = f"{result:.6f}".rstrip('0').rstrip('.')
        else:
            result_str = str(result)
        return f"The answer is: {result_str}"
    except Exception as e:
        return f"Error during calculation: {str(e)}"


def reverse_string(input_string):
    """
    反轉(zhuǎn)給定的字符串。
    參數(shù):
    input_string (str): 要反轉(zhuǎn)的字符串。
    返回:
    str: 反轉(zhuǎn)后的字符串。
    """
    if not isinstance(input_string, str):
        return "Error: Input must be a string"
    reversed_string = input_string[::-1]
    result = f"The reversed string is: {reversed_string}"
    return result

這些函數(shù)根據(jù)提供的輸入執(zhí)行特定任務(wù)。??basic_calculator???處理算術(shù)運(yùn)算,而??reverse_string??則反轉(zhuǎn)給定的字符串。

步驟4:構(gòu)建工具箱

??ToolBox??類用于存儲智能體可以使用的所有工具,并為每個工具提供描述:

class ToolBox:
    def __init__(self):
        self.tools_dict = {}

    def store(self, functions_list):
        """
        存儲列表中每個函數(shù)的名稱和文檔字符串。
        參數(shù):
        functions_list (list): 要存儲的函數(shù)對象列表。
        返回:
        dict: 以函數(shù)名稱為鍵,其文檔字符串為值的字典。
        """
        for func in functions_list:
            self.tools_dict[func.__name__] = func.__doc__
        return self.tools_dict

    def tools(self):
        """
        將store方法中創(chuàng)建的字典轉(zhuǎn)換為文本字符串返回。
        返回:
        str: 存儲的函數(shù)及其文檔字符串的字典,以文本字符串形式返回。
        """
        tools_str = ""
        for name, doc in self.tools_dict.items():
            tools_str += f"{name}: \"{doc}\"\n"
        return tools_str.strip()

這個類將幫助智能體了解哪些工具可用以及每個工具的用途。

步驟5:創(chuàng)建智能體類

智能體需要進(jìn)行思考、決定使用哪個工具并執(zhí)行它。以下是??Agent??類的代碼:

agent_system_prompt_template = """
你是一個智能AI助手,可以使用特定的工具。你的回復(fù)必須始終采用以下JSON格式:
{
    "tool_choice": "name_of_the_tool",
    "tool_input": "inputs_to_the_tool"
}
工具及使用場景:
1. basic_calculator:用于任何數(shù)學(xué)計算
    - 輸入格式: {{"num1": number, "num2": number, "operation": "add/subtract/multiply/divide"}}
    - 支持的運(yùn)算: add/plus, subtract/minus, multiply/times, divide
    - 示例輸入和輸出:
        - 輸入: "Calculate 15 plus 7"
        - 輸出: {{"tool_choice": "basic_calculator", "tool_input": {{"num1": 15, "num2": 7, "operation": "add"}}}}
        - 輸入: "What is 100 divided by 5?"
        - 輸出: {{"tool_choice": "basic_calculator", "tool_input": {{"num1": 100, "num2": 5, "operation": "divide"}}}}
2. reverse_string:用于任何涉及反轉(zhuǎn)文本的請求
    - 輸入格式: 僅需反轉(zhuǎn)的文本字符串
    - 當(dāng)用戶提到“reverse”、“backwards”或要求反轉(zhuǎn)文本時,始終使用此工具
    - 示例輸入和輸出:
        - 輸入: "Reverse of 'Howwwww'?"
        - 輸出: {{"tool_choice": "reverse_string", "tool_input": "Howwwww"}}
        - 輸入: "What is the reverse of Python?"
        - 輸出: {{"tool_choice": "reverse_string", "tool_input": "Python"}}
3. no tool:用于一般對話和問題
    - 示例輸入和輸出:
        - 輸入: "Who are you?"
        - 輸出: {{"tool_choice": "no tool", "tool_input": "I am an AI assistant that can help you with calculations, reverse text, and answer questions. I can perform mathematical operations and reverse strings. How can I help you today?"}}
        - 輸入: "How are you?"
        - 輸出: {{"tool_choice": "no tool", "tool_input": "I'm functioning well, thank you for asking! I'm here to help you with calculations, text reversal, or answer any questions you might have."}}
嚴(yán)格規(guī)則:
1. 對于關(guān)于身份、能力或感受的問題:
    - 始終使用“no tool”
    - 提供完整、友好的回復(fù)
    - 提及你的能力
2. 對于任何文本反轉(zhuǎn)請求:
    - 始終使用“reverse_string”
    - 僅提取要反轉(zhuǎn)的文本
    - 去除引號、“reverse of”和其他多余文本
3. 對于任何數(shù)學(xué)運(yùn)算:
    - 始終使用“basic_calculator”
    - 提取數(shù)字和運(yùn)算
    - 將文本形式的數(shù)字轉(zhuǎn)換為數(shù)字
以下是你的工具列表及其描述:
{tool_descriptions}
記住:你的回復(fù)必須始終是包含“tool_choice”和“tool_input”字段的有效JSON。
"""


class Agent:
    def __init__(self, tools, model_service, model_name, stop=None):
        """
        用工具列表和模型初始化智能體。
        參數(shù):
        tools (list): 工具函數(shù)列表。
        model_service (class): 具有g(shù)enerate_text方法的模型服務(wù)類。
        model_name (str): 要使用的模型名稱。
        """
        self.tools = tools
        self.model_service = model_service
        self.model_name = model_name
        self.stop = stop

    def prepare_tools(self):
        """
        將工具存儲在工具箱中并返回其描述。
        返回:
        str: 存儲在工具箱中的工具的描述。
        """
        toolbox = ToolBox()
        toolbox.store(self.tools)
        tool_descriptions = toolbox.tools()
        return tool_descriptions

    def think(self, prompt):
        """
        使用系統(tǒng)提示模板和工具描述在模型上運(yùn)行g(shù)enerate_text方法。
        參數(shù):
        prompt (str): 用于生成響應(yīng)的用戶查詢。
        返回:
        dict: 模型的響應(yīng),以字典形式返回。
        """
        tool_descriptions = self.prepare_tools()
        agent_system_prompt = agent_system_prompt_template.format(tool_descriptions=tool_descriptions)
        if self.model_service == OllamaModel:
            model_instance = self.model_service(
                model=self.model_name,
                system_prompt=agent_system_prompt,
                temperature=0,
                stop=self.stop
            )
        else:
            model_instance = self.model_service(
                model=self.model_name,
                system_prompt=agent_system_prompt,
                temperature=0
            )
        agent_response_dict = model_instance.generate_text(prompt)
        return agent_response_dict

    def work(self, prompt):
        """
        解析think方法返回的字典并執(zhí)行相應(yīng)的工具。
        參數(shù):
        prompt (str): 用于生成響應(yīng)的用戶查詢。
        返回:
        執(zhí)行相應(yīng)工具的響應(yīng),如果未找到匹配的工具,則返回tool_input。
        """
        agent_response_dict = self.think(prompt)
        tool_choice = agent_response_dict.get("tool_choice")
        tool_input = agent_response_dict.get("tool_input")
        for tool in self.tools:
            if tool.__name__ == tool_choice:
                response = tool(tool_input)
                print(colored(response, 'cyan'))
                return
        print(colored(tool_input, 'cyan'))
        return

這個類有三個主要方法:

  • ??prepare_tools??:存儲并返回工具的描述。
  • ??think??:根據(jù)用戶提示決定使用哪個工具。
  • ??work??:執(zhí)行選擇的工具并返回結(jié)果。

步驟6:運(yùn)行智能體

最后,讓我們把所有內(nèi)容整合起來,運(yùn)行我們的智能體。在腳本的主程序部分,初始化智能體并開始接受用戶輸入:

if __name__ == "__main__":
    """
    使用此智能體的說明:
    你可以嘗試的示例查詢:
    1. 計算器運(yùn)算:
        - "Calculate 15 plus 7"
        - "What is 100 divided by 5?"
        - "Multiply 23 and 4"
    2. 字符串反轉(zhuǎn):
        - "Reverse the word 'hello world'"
        - "Can you reverse 'Python Programming'?"
    3. 一般問題(將得到直接回復(fù)):
        - "Who are you?"
        - "What can you help me with?"
    Ollama命令(在終端中運(yùn)行這些命令):
        - 查看可用模型:    'ollama list'
        - 查看正在運(yùn)行的模型:      'ps aux | grep ollama'
        - 列出模型標(biāo)簽:          'curl http://localhost:11434/api/tags'
        - 拉取新模型:         'ollama pull mistral'
        - 運(yùn)行模型服務(wù)器:         'ollama serve'
    """
    tools = [basic_calculator, reverse_string]
    model_service = OllamaModel
    model_name = "llama2"
    stop = "<|eot_id|>"
    agent = Agent(tools=tools, model_service=model_service, model_name=model_name, stop=stop)
    print("\nWelcome to the AI Agent! Type 'exit' to quit.")
    print("You can ask me to:")
    print("1. Perform calculations (e.g., 'Calculate 15 plus 7')")
    print("2. Reverse strings (e.g., 'Reverse hello world')")
    print("3. Answer general questions\n")
    while True:
        prompt = input("Ask me anything: ")
        if prompt.lower() == "exit":
            break
        agent.work(prompt)

3. 結(jié)論

在這篇博文中,我們從理解智能體是什么開始,逐步實(shí)現(xiàn)了一個智能體。我們設(shè)置了環(huán)境,定義了模型,創(chuàng)建了必要的工具,并構(gòu)建了一個結(jié)構(gòu)化的工具箱來支持智能體的功能。最后,我們通過運(yùn)行智能體,將所有內(nèi)容整合到了一起。

本文轉(zhuǎn)載自??柏企閱文??,作者:柏企

標(biāo)簽
收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦
99re这里都是精品| 成人羞羞视频播放网站| 午夜精品久久久久影视| 精品国产免费一区二区三区| 中文字幕一区二区人妻视频| 久久视频精品| 亚洲国产精品成人一区二区| 日本在线观看免费视频| 在线播放蜜桃麻豆| 亚洲啪av永久无码精品放毛片| 第一福利在线| 国产成人免费视频网站 | 少妇高潮惨叫久久久久| 亚洲一区二区三区在线免费| 精品国产鲁一鲁一区二区张丽 | 在线成人h网| 中文字幕日韩av综合精品| 中文字幕一二三区| 亚洲精品555| 亚洲国产精品自拍| 一级全黄肉体裸体全过程| 亚洲色图 校园春色| 国产精品亚洲第一区在线暖暖韩国| 26uuu久久噜噜噜噜| 青娱乐免费在线视频| 欧美极品在线观看| 亚洲国产精品成人精品| 91香蕉视频免费看| 日韩久久一区| 欧美伊人久久久久久午夜久久久久| 人妻夜夜添夜夜无码av| а√天堂资源地址在线下载| 国产精品天干天干在观线| 精品免费视频123区| 亚洲成人77777| 国产自产高清不卡| 国产精品极品在线| 久久精品视频5| 午夜综合激情| 欧美亚洲一区在线| 亚洲国产精品成人无久久精品| 久久久人成影片免费观看| 在线观看91久久久久久| 天天躁日日躁aaaxxⅹ| 日日天天久久| 精品亚洲夜色av98在线观看| 亚洲欧美日韩偷拍| 国产精品99久久免费观看| 日韩一级大片在线| 成人高清在线观看| 亚洲熟妇无码av在线播放| 视频一区二区三区在线看免费看| 国产成人福利片| 999国产在线| 黄片毛片在线看| 成人污视频在线观看| 亚洲在线视频福利| 精品国产一级片| 成人午夜激情视频| 国产日韩欧美综合精品| 五月天激情婷婷| 91视频观看免费| 欧美亚洲另类在线一区二区三区| 青青草观看免费视频在线| 久久品道一品道久久精品| 欧美激情视频一区二区三区| 精品视频二区| 国产精品国产三级国产三级人妇| 亚洲制服中文| 91精品久久| 精品久久久久久国产| 日韩毛片在线免费看| 视频一区在线免费看| 欧美三级三级三级爽爽爽| 手机免费av片| www.丝袜精品| 精品亚洲国产视频| 日韩精品久久久久久久的张开腿让| 久久国产电影| 欧美激情亚洲国产| 亚洲欧美综合另类| 久久国产尿小便嘘嘘| 91成人伦理在线电影| 视频一区 中文字幕| 国产亲近乱来精品视频| 黄色网zhan| 在线观看涩涩| 欧美精品aⅴ在线视频| 国产精品一区二区在线免费观看| 亚州精品视频| 久久色免费在线视频| 天天操天天干视频| 免费观看30秒视频久久| 1卡2卡3卡精品视频| 四虎影视在线观看2413| 国产精品久久久久影院亚瑟| 阿v天堂2018| 欧美亚洲黄色| 精品五月天久久| 粉嫩av性色av蜜臀av网站| 欧美亚洲专区| 97久久精品午夜一区二区| 久久精品国产亚洲a∨麻豆| 亚洲人精品午夜| 国产男女无遮挡| 91n.com在线观看| 二区三区四区高清视频在线观看| 香蕉加勒比综合久久| 爱情岛论坛亚洲首页入口章节| 6080成人| 久久精品国产99国产精品澳门| 日韩精品人妻中文字幕| 国产资源在线一区| 日本一区视频在线| 成人免费网站观看| 欧美夫妻性生活| 一区二区三区四区免费| 精品动漫av| 成人午夜激情免费视频| 国产在线网站| 欧美午夜久久久| 无码人妻丰满熟妇啪啪网站| 首页国产精品| 国产精品久久久久久久av大片| 天天干天天色天天| 亚洲一区在线电影| 亚洲理论中文字幕| 97视频精品| 国产成人精品一区二区| 天堂av在线免费观看| 一级日本不卡的影视| 国产美女视频免费看| 国产一区二区三区网| 欧美尤物巨大精品爽| 欧美一级特黄aaaaaa| 亚洲最快最全在线视频| 国产亚洲精品91在线| 美女久久久久久久久久| 亚洲每日在线| 黑人另类av| 成人bbav| 亚洲国产精品成人一区二区| 国产一级av毛片| 成人一区二区三区视频在线观看| 91制片厂免费观看| 狂野欧美xxxx韩国少妇| 久久精品最新地址| 国产绿帽刺激高潮对白| 亚洲欧洲性图库| www.午夜av| 亚洲电影影音先锋| 91精品网站| 欧美精品videosex| 精品久久久三级丝袜| 九九热精彩视频| 成人一区二区三区中文字幕| 国产一级做a爰片久久毛片男| 一区二区三区高清在线观看| 欧美激情一区二区三级高清视频| 六月丁香色婷婷| 偷拍亚洲欧洲综合| 中日韩精品一区二区三区| 日韩电影免费在线观看网站| 亚洲成人午夜在线| 国产欧美日韩电影| 久久久免费观看视频| 天堂中文在线观看视频| 色悠悠久久综合| 亚洲天堂精品一区| 国产一区二区精品久久91| 91视频 - 88av| 欧美午夜寂寞| 国产精品久久久久久中文字| 久久黄色美女电影| 欧美精品一区二区三区高清aⅴ| 91在线看视频| 中文乱码免费一区二区 | 国产在线乱码一区二区三区| 欧美另类videos| 无码少妇一区二区三区| 国产激情综合五月久久| 国产黄色小视频在线| 欧美精品一区二区久久婷婷| 无码视频一区二区三区| 中文字幕综合网| 一级国产黄色片| 麻豆一区二区99久久久久| 日本国产中文字幕| 国内精品久久久久久久影视简单 | 国产精品igao| 午夜日韩视频| 欧洲精品久久| 91成人在线精品视频| 国产精品777| 高h视频在线播放| 一本一道久久a久久精品逆3p| 国产视频手机在线| 色综合亚洲欧洲| 国语对白在线播放| 欧美国产精品一区二区三区| 特级特黄刘亦菲aaa级| 全部av―极品视觉盛宴亚洲| 日本一本中文字幕| 99久久视频| 欧美日韩精品一区| av男人一区| 亚洲一区二区久久久久久久| 26uuu亚洲电影| 久久久久成人精品| 尤物视频在线免费观看| 亚洲精品一区二区网址| 精品国产无码AV| 欧美人伦禁忌dvd放荡欲情| 亚洲精品国产精品乱码| 一区二区三区精品在线观看| 美国美女黄色片| 久久久影视传媒| 中文字幕三级电影| 国产成人综合在线播放| 精品久久久99| 免费在线看一区| 韩国日本在线视频| 99综合精品| 日韩五码在线观看| 欧美91大片| 伊人婷婷久久| 日韩激情免费| 午夜精品短视频| 欧洲乱码伦视频免费| 欧美人xxxxx| 亚州国产精品| 久久综合狠狠综合久久综青草 | 欧美精品免费观看二区| 91久久精品无嫩草影院 | 国产麻豆91视频| 欧美丝袜丝交足nylons图片| 中文字幕一区二区三区四区欧美| 欧美日韩人人澡狠狠躁视频| 国产精品suv一区二区| 一区二区三区日本| 欧美日韩国产精品综合| 亚洲综合色区另类av| 久久精品一级片| 亚洲国产裸拍裸体视频在线观看乱了| 国产一级生活片| 香蕉av福利精品导航| 日本网站在线播放| 欧美视频一二三| 美女又爽又黄免费视频| 一本大道久久a久久综合| 国产成人一级片| 在线看不卡av| 91片黄在线观看喷潮| 欧美日韩高清一区| 国产精品视频无码| 欧美一级二级三级蜜桃| 亚洲av无码片一区二区三区| 精品久久久久久久久久久久久久久 | 久久亚洲色图| 欧美精品成人网| 看片的网站亚洲| 性久久久久久久久久久久久久| 国产精品一区二区久久不卡| 图片区偷拍区小说区| 91小视频在线观看| 亚洲性猛交xxxx乱大交| 国产精品看片你懂得| 欧美日韩大片在线观看| 欧美特黄级在线| 亚洲一级在线播放| 欧美一级日韩一级| 性感美女一级片| 中文字幕久久久| 男女视频在线| 国产不卡在线观看| 国产一区二区三区免费观看在线| 国产99视频精品免费视频36| 自拍偷拍精品| 日本一区二区三区四区五区六区| 狠狠综合久久av一区二区老牛| 怡红院av亚洲一区二区三区h| 日日摸夜夜添夜夜添精品视频 | 国产电影一区二区| 国产亚洲精品美女久久久m| 欧美人与物videos另类xxxxx| 亚洲午夜精品国产| 9国产精品视频| 一个色综合久久| www.色精品| 中文国语毛片高清视频| 亚洲成人在线免费| 中文字幕+乱码+中文字幕明步| 日韩天堂在线观看| 国产h视频在线观看| 久久999免费视频| 欧美不卡高清一区二区三区| 99久久综合狠狠综合久久止 | 色阁综合伊人av| 999精品网| 91精品国产自产在线| 日韩mv欧美mv国产网站| 中文字幕欧美日韩一区二区三区| 在线视频精品| 女人扒开腿免费视频app| 国产午夜三级一区二区三| 国产在线视频在线观看| 欧美日韩国产精选| 可以直接在线观看的av| 久久久久久久久久久91| 成人豆花视频| 亚洲国产欧美日韩| 国产农村妇女精品一区二区| 91视频免费入口| 国产精品久久久久久一区二区三区| 国产成人愉拍精品久久| 日韩三级电影网址| 日本电影在线观看网站| 91成人在线播放| 哺乳挤奶一区二区三区免费看| 综合操久久久| 奇米精品一区二区三区四区| 97人妻精品一区二区三区免| 亚洲一区二区五区| jizz国产视频| 欧美大奶子在线| 91精品一久久香蕉国产线看观看| 日韩av不卡播放| 久久久精品日韩| 日本黄色特级片| 狠狠久久亚洲欧美专区| 日韩中文字幕免费观看| 久久99久久99精品免观看粉嫩| 涩涩涩久久久成人精品| 视频一区二区三区免费观看| 老司机精品久久| 性高潮久久久久久久| 色综合久久中文综合久久97| 视频三区在线观看| 欧美重口另类videos人妖| 五月国产精品| 黄色国产小视频| 日本一区二区三区dvd视频在线 | 极品美妇后花庭翘臀娇吟小说| 在线观看一区二区精品视频| 精品亚洲成a人片在线观看| 26uuu久久噜噜噜噜| 亚洲精品中文字幕99999| 1024精品视频| 国产日韩影视精品| 国产精品成人无码| 中文字幕在线成人| 亚洲免费资源| 精品久久久无码人妻字幂| 国产成人精品影院| 久久久久人妻一区精品色欧美| 精品少妇一区二区三区免费观看| 成年网站在线视频网站| 精品在线不卡| 肉色丝袜一区二区| 国产一区在线观看免费| 欧美一区二区黄| 19禁羞羞电影院在线观看| 精品一区二区久久久久久久网站| 久久国产精品99国产| 日本乱子伦xxxx| 69p69国产精品| 182在线播放| 日韩欧美三级电影| 激情国产一区二区| 国产在线综合网| 亚洲欧洲日产国产网站| 日韩欧美专区| 欧美精品久久久久久久自慰| 91丨九色丨国产丨porny| 中文字幕无码乱码人妻日韩精品| 不卡av电影院| 欧洲亚洲成人| 亚洲综合激情视频| 亚洲国产精品麻豆| 国产黄色片在线观看| 91影视免费在线观看| 99精品热6080yy久久| 一本色道久久88| 亚洲国产欧美日韩精品| 78精品国产综合久久香蕉| 996这里只有精品| 国产视频一区在线播放| 精品人妻久久久久一区二区三区 | 不卡av电影在线| 欧美成aaa人片免费看| 蜜桃一区二区三区| 老女人性生活视频| 在线中文字幕一区二区| 色黄网站在线观看| 91精品办公室少妇高潮对白| 国产99在线 | 亚洲| 精品久久久久久久久久久久包黑料 | 444亚洲人体| 天堂久久久久va久久久久| wwwav国产|