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

基于Gemini 2.0和LangGraph實現自主多工具AI代理 原創

發布于 2025-1-24 08:10
瀏覽
0收藏

本文旨在探討基于Gemini 2.0和LangGraph構建一個自主型多工具AI代理的關鍵過程,并提供示例程序的完整代碼。

簡介

當今,LLM應用非常出色——它們可以記住大量信息、回答一般知識問題、編寫代碼、生成故事,甚至還可以糾正語法錯誤,等等。然而,它們并非沒有局限性。它們會產生幻覺,知識斷點可能從幾個月到幾年不等,并且僅限于生成文本,無法與現實世界互動。顯然,這限制了它們在需要實時數據、來源引用或文本生成以外功能的任務中的實用性。這正是代理和工具試圖解決的主要問題:它們通過為LLM增加附加功能來彌補這一差距。這些改進使LLM能夠訪問最新的信息、與API交互、搜索,甚至能夠影響例如調節智能家居的溫度參數等的物理世界。

在本文中,我們將構建一個簡單的LLM代理,該代理配備了四個工具,可用于回答用戶的問題。具體地講,此代理將實現以下功能:

  • 可以使用最新的可驗證信息回答一般知識問題。
  • 可以使用四種類型的工具:DuckDuckGo搜索、獲取網頁內容、維基百科搜索、獲取維基百科頁面內容。
  • 允許LLM推理用戶的輸入、消息歷史記錄、上一個工具調用及其結果,以決定是否接下來使用某個工具——如果使用的話,要使用哪個參數。
  • 代理允許在每個時間步驟中同時使用多個工具。

基于Gemini 2.0和LangGraph實現自主多工具AI代理-AI.x社區

示例程序代理組件整體架構

實現過程中,我們將使用LangGraph作為代理實現,并使用Gemini 2.0作為LLM。但是,將能夠以最少的代碼修改把它切換到大多數你的其他類型的LLM應用程序。本示例項目的完整代碼位于地址??https://github.com/CVxTz/document_ai_agents/blob/master/document_ai_agents/document_multi_tool_agent.py???

工具

首先,讓我們構建其中一個工具,例如Web搜索工具:

from duckduckgo_search import DDGS
from pydantic import BaseModel

class PageSummary(BaseModel):
page_title: str
page_summary: str
page_url: str

class SearchResponse(BaseModel):
page_summaries: list[PageSummary]

def search_duck_duck_go(search_query: str) -> SearchResponse:
"""
通過 duckduckgo 頁面進行搜索。
:參數search_query: 發送到 DuckDuckGo 搜索的查詢。
每次只搜索一個項目,即使這意味著多次調用該工具。
:不返回任何值:
"""
max_results = 10

with DDGS() as dd:
results_generator = dd.text(
search_query,
max_results=max_results,
backend="api",
)

return SearchResponse(
page_summaries=[
PageSummary(
page_title=x["title"], page_summary=x["body"], page_url=x["href"]
)
for x in results_generator
]
)

在這里,我們的“工具”是一個簡單的Python函數,它使用duckduckgo_search庫來獲取與搜索查詢相關的搜索結果。LLM將根據用戶的消息決定選擇什么查詢。此函數的輸出如下所示:

{'page_summaries': [{'page_summary': 'Stevia is a plant-based sweetener that '
'is 200 to 400 times sweeter than sugar '
'and has no calories or carbohydrates. '
'Learn about its health benefits, side '
'effects, and how to use it in cooking '
'and baking.',
'page_title': 'Stevia: Health Benefits and Risks - WebMD',
'page_url': 'https://www.webmd.com/food-recipes/what-is-stevia'},
{'page_summary': 'Stevia is a herb that can be used as a '
'zero-calorie, zero-carb sugar '
'substitute. Learn about its history, '
'safety, potential health benefits and '
'drawbacks from Cleveland Clinic experts.',
'page_title': 'Stevia: What Is It and Is It Healthy? - '
'Cleveland Clinic Health Essentials',
'page_url': 'https://health.clevelandclinic.org/what-is-stevia'},
{'page_summary': 'Stevia is a sugar substitute extracted '
'from the leaves of Stevia rebaudiana, a '
'plant native to Paraguay and Brazil. '

...

接下來,讓我們繼續看一下get_wikipedia_page函數:

def get_wikipedia_page(page_title: str, max_text_size: int = 16_000):
"""
獲取維基百科頁面的全部內容
:參數page_title: 首先調用工具“search_wikipedia”以確保該頁面存在。
:參數max_text_size: 默認值為16000
:return:
"""

page = wikipedia.page(title=page_title, auto_suggest=False)
full_content = strip_tags(page.html())
full_page = FullPage(
page_title=page.title,
page_url=page.url,
content=full_content[:max_text_size],
)

return full_page

此函數獲取頁面的完整html,并將其刪除的html標簽返回給調用者。輸出如下所示:

{'content': 'Sweetener and sugar substitute\n'
'This article is about the sweetener. For other uses, see Stevia '
'(disambiguation).\n'
'\n'
'Stevia (/?sti?vi?, ?st?vi?/)[1][2] is a sweet sugar substitute '
'that is about 50 to 300\xa0times sweeter than sugar.[3] It is '
'extracted from the leaves of Stevia rebaudiana, a plant native to 
...
...
'^ Samuel, Priscilla; Ayoob, Keith T; Magnuson, Bernadene A; '
'W?lwer-Rieck, Ursula; Jeppesen, Per Bendix; Rogers, Peter J; '
'Rowland, Ian; Mathews, Rebecca (1 July 2018). "Stevia Leaf to '
'Stevia Sweetener: Exploring Its Science, Benefits, and Future '
'Potential". The Journal of Nutrition. 148 (7): 1186S – 1205S. '
'doi:10.1093/jn/nxy102. '
'hdl:1983/618532e2-6caa-4fbe-bd6e-6eb0cb608981. ISSN\xa00022-3166. '
'PMID\xa029982648.\n'
'\n'
'^ a b c d "Has stevia been approved by FDA to be used as a '
'sweetener?". US Foo',
'page_title': 'Stevia',
'page_url': 'https://en.wikipedia.org/wiki/Stevia'}

總的來說,我們定義了四個這樣的函數:

  • search_wikipedia(search_query: str)
  • get_wikipedia_page(page_title: str, max_text_size: int = 16_000):
  • search_duck_duck_go(search_query: str)
  • get_page_content(page_title: str, page_url: str)

所有這些函數都傳遞給Gemini客戶端,如下所示:

model = genai.GenerativeModel(
"gemini-2.0-flash-exp",
tools=[
get_wikipedia_page,
search_wikipedia,
search_duck_duck_go,
get_page_content,
]
)

客戶端將從函數定義中推斷出調用參數及其類型。它還將傳遞此生成的模型中的函數的文檔字符串,因此我們需要向LLM解釋該工具如何在此文檔字符串中工作以獲得最佳結果。

LLM

我們將使用Gemini客戶端與LLM(特別是Gemini 2.0)進行交互。首先,你需要設置一個API密鑰——可以從Google AI Studio獲取。使用此客戶端,我們將提示LLM生成響應或創建函數調用(或兩者兼而有之)。然后,這些函數調用將應用于我們上面定義的工具。

當使用提示調用時,客戶端可能會使用常規文本或包含函數調用的內容進行響應,例如:

{'function_call': 
{'name': 'search_wikipedia', 'args': {'search_query': 'Trey Parker'}}
}

這種類型的響應包含工具的名稱及其參數。這允許LLM選擇要訪問哪些外部資源以及如何訪問。

代理

以下是我們代理的完整實現(僅70行代碼):

class ToolCallAgent:
def __init__(self, tools: list[Callable], model_name="gemini-2.0-flash-exp"):
self.model_name = model_name
self.model = genai.GenerativeModel(
self.model_name,
tools=tools,
system_instruction="You are a helpful agent that has access to different tools. Use them to answer the "
"user's query if needed. Only use information from external sources that you can cite. "
"You can use multiple tools before giving the final answer. "
"If the tool response does not give an adequate response you can use the tools again with different inputs."
"Only respond when you can cite the source from one of your tools."
"Only answer I don't know after you have exhausted all ways to use the tools to search for that information.",
)
self.tools = tools
self.tool_mapping = {tool.__name__: tool for tool in self.tools}
self.graph = None
self.build_agent()
def call_llm(self, state: AgentState):
response = self.model.generate_content(
state.messages,
request_options=RequestOptions(
retry=retry.Retry(initial=10, multiplier=2, maximum=60, timeout=300)
),
)
return {
"messages": [
type(response.candidates[0].content).to_dict(
response.candidates[0].content
)
]
}
def use_tool(self, state: AgentState):
assert any("function_call" in part for part in state.messages[-1]["parts"])

tool_result_parts = []

for part in state.messages[-1]["parts"]:
if "function_call" in part:
name = part["function_call"]["name"]
func = self.tool_mapping[name]
result = func(**part["function_call"]["args"])
tool_result_parts.append(
{
"function_response": {
"name": name,
"response": result.model_dump(mode="json"),
}
}
)
return {"messages": [{"role": "tool", "parts": tool_result_parts}]}
@staticmethod
def should_we_stop(state: AgentState) -> str:
logger.debug(
f"Entering should_we_stop function. Current message: {state.messages[-1]}"
)  # Added log
if any("function_call" in part for part in state.messages[-1]["parts"]):
logger.debug(f"Calling tools: {state.messages[-1]['parts']}")
return "use_tool"
else:
logger.debug("Ending agent invocation")
return END
def build_agent(self):
builder = StateGraph(AgentState)
builder.add_node("call_llm", self.call_llm)
builder.add_node("use_tool", self.use_tool)

builder.add_edge(START, "call_llm")
builder.add_conditional_edges("call_llm", self.should_we_stop)
builder.add_edge("use_tool", "call_llm")
self.graph = builder.compile()

首先,在上述代碼中,我們定義LLM客戶端,其中包含一組工具和一個簡單的提示。

其次,我們定義第一個節點“call_llm”,使用消息歷史記錄調用LLM API。

第三,我們定義一個工具調用節點,執行LLM請求的所有函數調用。

最后,我們定義代理的狀態轉換圖:

基于Gemini 2.0和LangGraph實現自主多工具AI代理-AI.x社區

示例項目所定義代理的狀態圖

代理將繼續運行,直到LLM的新響應不包含任何工具調用。這會在狀態圖中創建一個循環,并允許代理的執行優化搜索查詢和工具使用,直到找到用戶詢問的內容。

示例運行

現在,讓我們對這個代理進行測試運行。我們將從一個簡單的查詢開始。

英文提問:

Is puffer fish poisonous ? if so, explain why and list some other poisonous (not venomous) fish. Don’t cite Wikipedia only.

譯文:

河豚有毒嗎?如果是,請解釋原因并列出一些其他有毒(無毒)的魚。不要只引用維基百科。

以下是與代理交流的過程(我為了簡潔而刪減了大部分文本):

User(用戶):

英文提問:

Is pufferfish poisonous? If so, explain why and list some other poisonous (not venomous) fish. Don’t cite Wikipedia only.

譯文:

河豚有毒嗎?如果是,請解釋原因并列出一些其他有毒(無毒)的魚。不要只引用維基百科。

模型(Model):

function_call:
name:search_duck_duck_go
args:
search_query:are puffer fish poisonous

工具(Tool):

function_response:
name:search_duck_duck_go
response:
page_summaries:
page_title: How The Poisonous Pufferfish Became A Delicacy (And The Deadly Mishaps …
page_summary: Pufferfish, or fugu, is a popular and expe….
page_url: https://www.tastingtable.com/1616127/poisonous-pufferfish-explained/
page_title: Are Puffer Fish Poisonous To Touch? Here’s What You Need To Know
page_summary: Puffer fish contain a deadly toxin called tetrodotoxin that can cause paralysis and death if ingested or touched. …
page_url: https://safeharborfishing.com/are-puffer-fish-poisonous-to-touch-heres-what-you-need-to-know/
….

部分譯文:

page_title:有毒的河豚如何成為美味佳肴(以及致命的事故……

page_summary:河豚,或稱河豚,是一種流行且昂貴的……

page_url:https://www.tastingtable.com/1616127/poisonous-pufferfish-explained/

page_title:觸摸河豚有毒嗎?以下是你需要了解的內容

page_summary:河豚含有一種致命的毒素,稱為河豚毒素,如果攝入或接觸會導致癱瘓和死亡?!?/span>

page_url: https://safeharborfishing.com/are-puffer-fish-poisonous-to-touch-heres-what-you-need-to-know/

….

模型(Model)響應:

Yes, pufferfish are poisonous. They contain a deadly neurotoxin called tetrodotoxin, which can cause paralysis and death if ingested or touched. This toxin is not destroyed by cooking or freezing. The pufferfish’s diet, which includes invertebrates and algae like mussels and shellfish, contributes to the presence of tetrodotoxin.

Here are some other poisonous (not venomous) fish:

Northern Stargazer: These fish have poisonous spines behind their eyes.
Toadfish: Certain species of toadfish have poisonous spines.
Rabbitfish: These fish have spines containing toxins.
…

譯文:

是的,河豚有毒。它們含有一種致命的神經毒素,稱為河豚毒素,如果攝入或接觸會導致癱瘓和死亡。這種毒素不會被烹飪或冷凍破壞。河豚的食物包括無脊椎動物和藻類,如貽貝和貝類,這導致了河豚毒素的存在。

以下是其他一些有毒(無毒)的魚:

北方觀星魚:這些魚的眼睛后面有毒刺。

蟾魚:某些種類的蟾魚有有毒的刺。

兔魚:這些魚的刺含有毒素。

這次交流涉及一輪工具調用,包括使用DuckDuckGo進行網絡搜索,這足以讓LLM獲得所需的所有信息。

現在,讓我們嘗試一個更復雜的場景,其中代理需要進行多次工具調用:

英文提問:

What is the number and season of the south park episode where they get time traveling immigrants? Who was the director of that episode? Where and when was he born ? Give me his wikipedia page link.

譯文:

南方公園第幾集和第幾季有時間旅行移民?那一集的導演是誰?他出生在哪里和什么時候?給我有關它的維基百科頁面鏈接。

如果沒有工具支持,模型會回答:

英文提問:

The South Park episode you\’re referring to is **Season 18, Episode 7 titled “Grounded Vindaloop”**. It does not feature time-traveling immigrants, but rather focuses…

譯文:

你提到的南方公園劇集是**第18季,第7集,標題為“Grounded Vindaloop”**。它沒有時間旅行移民,而是關注……

顯然,這個答案是錯誤的。

下面,借助于工具支持,有如下結果:

用戶(User):

What is the number and season of the South Park episode where they get time-traveling immigrants? Who was the director of that episode? Where and when was he born? Give me his Wikipedia page link.

譯文:

南方公園第幾季出現了穿越時空的移民?那一集的導演是誰?他何時何地出生?給我它的維基百科頁面鏈接。

模型(Model)響應:

function_call:
name: search_wikipedia
args:
search_query: south park time traveling immigrants episode

工具(Tool):

function_response:
name: search_wikipedia
response:
page_summaries:

page_title: Goobacks
page_summary: “Goobacks” is the seventh episode of the eighth season of the animated television series South Park, and the 118th overall episode of the series. In production order, …
page_url: https://en.wikipedia.org/wiki/Goobacks
page_title: List of time travel works of fiction
page_summary: Time travel is a common plot element in fiction. Works where it plays a prominent role are listed below. For stories of time travel in antiquity, see the history of the time travel concept.
page_url: https://en.wikipedia.org/wiki/List_of_time_travel_works_of_fiction
…

模型(Model)響應:

The South Park episode you’re referring to is called “Goobacks.” It is the seventh episode of the eighth season.

譯文:

你提到的《南方公園》劇集名為“Goobacks”。它是第八季的第七集。

模型(Model)響應:

function_call:
name: get_wikipedia_page
args:
page_title: Goobacks

工具(Tool):

function_response:
name: get_wikipedia_page
response:
page_title: Goobacks
page_url: https://en.wikipedia.org/wiki/Goobacks
content: 7th episode of the 8th season of South Park. “Goobacks” is the seventh episode of the eighth season of the animated television series South Park, and the 118th overall episode of the series. In production order, it is the season’s sixth episode. It originally aired on Comedy Central in the United States on April 28, 2004. The episode was directed by Trey Parker.

部分譯文:

內容:《南方公園》第八季第七集。《Goobacks》是動畫電視連續劇《南方公園》第八季第七集,也是該系列的第118集。按制作順序,它是該季的第六集。它最初于2004年4月28日在美國喜劇中心播出。該集由Trey Parker執導。

模型(Model)響應:

The episode “Goobacks” was directed by Trey Parker.

譯文:

“Goobacks”一集的導演是特雷·帕克 (Trey Parker)。

模型(Model)響應:

function_call:
name: search_wikipedia
args:
search_query: Trey Parker

工具(Tool):

function_response:
name: search_wikipedia
response:
page_summaries:

page_title: Trey Parker
page_summary: Randolph Severn “Trey” Parker III (born October 19, 1969) is an American actor, animator, writer, producer, director, and musician…
page_url: https://en.wikipedia.org/wiki/Trey_Parker
…

模型(Model)響應:

Trey Parker was born on October 19, 1969.

譯文:

崔·帕克出生于1969年10月19日。

模型(Model)響應:

function_call:
name: get_wikipedia_page
args:
page_title: Trey Parker

工具(Tool):

function_response:
name: get_wikipedia_page
response:
page_title: Trey Parker
page_url: https://en.wikipedia.org/wiki/Trey_Parker
content: Randolph Severn “Trey” Parker III (born October 19, 1969) is an American actor, animator, writer, producer, director, and musician. He was born in Conifer, Colorado, U.S.

部分譯文:

內容:蘭道夫·塞文·“特雷”·帕克三世(1969年10月19日出生)是美國演員、動畫師、作家、制片人、導演和音樂家。他出生于美國科羅拉多州康尼弗。

模型(Model)響應:

Trey Parker was born in Conifer, Colorado, U.S. on October 19, 1969.
Here is his Wikipedia page link: https://en.wikipedia.org/wiki/Trey_Parker

譯文:

特雷·帕克于1969年10月19日出生于美國科羅拉多州康尼弗。

這是他的維基百科頁面鏈接:https://en.wikipedia.org/wiki/Trey_Parker

該代理能夠迭代地進行工具調用(總共四次調用),以回答我們這個復雜的問題。但是,其中明確的答案不在第一個結果中,而是需要多個推理步驟和搜索查詢。

結論

我們在本文中開發了一個自主型的LLM代理,它能夠搜索網絡、瀏覽維基百科,并使用Gemini2.0作為其核心LLM推理檢索到的信息。該代理不僅能夠獲取相關數據,還實現了根據初始結果優化其搜索查詢,以找到用戶請求的確切信息。

上述實現為創建你自己的自主代理奠定了良好的基礎。通過將自定義工具定義為Python函數并將其集成到代理中,你可以輕松地根據你的特定需求進行調整。另外,開發本示例代理過程中得益于LangGraph框架,其實現的簡單性使得整個定制過程變得更為簡單。

現在,你可以開始構建適用于你自己的使用場景和應用程序的強大、合適的代理應用了。

本文完整源代碼下載地址??https://github.com/CVxTz/document_ai_agents/blob/master/document_ai_agents/document_multi_tool_agent.py???

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標題:??Building Autonomous Multi-Tool Agents with Gemini 2.0 and LangGraph??,作者:Youness Mansar

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-1-24 08:18:02修改
收藏
回復
舉報
回復
相關推薦
国产99午夜精品一区二区三区| 日韩亚洲第一页| 国产99久久九九精品无码| 日韩av资源站| 久久91精品久久久久久秒播| 色综合久久88色综合天天看泰| 国产精品无码一区二区三| 粉嫩一区二区三区| 一区二区三区在线不卡| 欧美高清性xxxxhd| 国产熟女一区二区三区五月婷| 亚洲精品韩国| 久久九九全国免费精品观看| 国产精品九九视频| 日韩毛片免费看| 精品国产福利视频| 中文字幕制服丝袜在线| 三级理论午夜在线观看| 国内精品久久久久影院薰衣草| 亚州成人av在线| 萌白酱视频在线| 久久黄色影视| 777精品伊人久久久久大香线蕉| 一二三四视频社区在线| 黄网站免费在线观看| 久久众筹精品私拍模特| www.成人三级视频| 一本色道久久综合精品婷婷| 免费亚洲网站| 午夜精品久久久久久久99热| 777777国产7777777| 国产一区国产二区国产三区| 亚洲国产精品字幕| 欧洲成人午夜精品无码区久久| 成人亚洲综合| 91久久免费观看| 久久无码高潮喷水| segui88久久综合9999| 综合久久综合久久| 亚洲午夜精品久久| 成年人在线观看网站| 91免费国产视频网站| 国产精品xxx在线观看www| 91在线你懂的| 免费成人小视频| 国产精品第二页| 日韩精品一区二区亚洲av观看| 一本色道久久精品| 97精品伊人久久久大香线蕉 | 欧美精品久久久久| 国精品无码一区二区三区| 日韩欧美网址| 日韩在线视频一区| 欧美特黄一级片| 欧美wwwww| xvideos亚洲| 情侣偷拍对白清晰饥渴难耐| 久久久久国产| 大胆人体色综合| 日韩va亚洲va欧美va清高| 国产精品久久久久蜜臀| 久久精品国产视频| 青青草原在线免费观看视频| 国产精品chinese| 国内精品模特av私拍在线观看| www.youjizz.com亚洲| 在线欧美不卡| 日本高清视频一区| 最近中文字幕免费观看| 精品亚洲成a人在线观看| 成人网在线观看| 亚洲成熟女性毛茸茸| 成人精品一区二区三区四区| 精品高清视频| 精品电影在线| 日韩一区在线免费观看| 久久国产午夜精品理论片最新版本| av2020不卡| 一本大道综合伊人精品热热 | 在线精品国产欧美| 免费成人深夜蜜桃视频| 一区二区三区午夜视频| 欧美—级高清免费播放| 成人午夜淫片100集| 蜜臀av性久久久久蜜臀aⅴ| 91久久偷偷做嫩草影院| 天堂网av2014| 久久蜜桃av一区二区天堂| 亚洲成人自拍| 爱看av在线| 欧美亚洲一区二区在线| 国产成人精品一区二区三区在线观看 | 欧美xxxxx少妇| 国产成人影院| 九色精品美女在线| 国产伦精品一区二区三区视频我| 精品一区二区三区的国产在线播放| 国产精品一区二区三区在线| 国产免费a∨片在线观看不卡| 一区二区三区四区在线免费观看| 青青视频在线播放| 精品国产欧美| 亚洲人成亚洲人成在线观看| 高h视频免费观看| 午夜在线观看免费一区| 成人激情综合网| 免费在线毛片| 亚洲在线成人精品| 久热精品在线观看视频| 日韩av三区| 九九精品视频在线观看| 在线免费观看国产精品| 懂色av一区二区三区免费看| 日韩妆和欧美的一区二区| 天堂av在线电影| 欧美日韩成人在线| 精品国产成人亚洲午夜福利| 激情五月***国产精品| 91精品久久久久久久久久另类| 三级av在线| 亚洲国产成人91porn| 污污网站免费观看| 神马久久一区二区三区| 97国产精品视频| 99在线精品视频免费观看软件| 国产欧美综合色| 成人观看免费完整观看| 91亚洲无吗| 欧美成人一二三| 国产又粗又猛又爽又黄视频| 国产日韩欧美电影| 成人综合视频在线| 国产丝袜一区| 欧美激情在线视频二区| 99re只有精品| 日韩美女久久久| 91丨九色丨蝌蚪| 99久久99久久精品国产片果冰| 茄子视频成人在线| 美女做暖暖视频免费在线观看全部网址91| 午夜精品久久久久久久99水蜜桃| ass极品水嫩小美女ass| 亚洲色图插插| 亚洲一区二区三区在线视频| 好操啊在线观看免费视频| 欧美久久久久久久久中文字幕| 日本精品久久久久中文| 日韩电影免费在线看| 秋霞久久久久久一区二区| 成人在线视频播放| 在线观看欧美成人| 少妇无套内谢久久久久| 国产精品理论片在线观看| 超碰在线播放91| 999久久久精品国产| 91久久在线视频| 爆操欧美美女| 精品国产网站在线观看| 亚洲国产精品成人无久久精品| 成人福利在线看| 欧美s码亚洲码精品m码| 九九精品在线| 国产精品日日做人人爱| 免费黄色在线看| 日韩视频一区二区三区| 久久精品这里有| 91蜜桃网址入口| 国产视频在线视频| 欧美高清视频在线观看mv| 亚洲www在线| 久久香蕉av| 亚洲欧美色图片| 在线观看视频二区| 亚洲国产精品自拍| 波多野吉衣中文字幕| 精品一区二区三区日韩| 日本wwwcom| 欧美亚洲在线日韩| 99re视频在线| 九色porny视频在线观看| 亚洲欧美在线一区二区| 国产乱淫a∨片免费观看| 亚洲一级电影视频| 日本二区在线观看| 国产成人在线视频网址| 国产视频九色蝌蚪| 98精品久久久久久久| 国产一区在线观| 男人亚洲天堂| 91国产一区在线| 麻豆免费在线视频| 国产丝袜一区二区三区免费视频| ,亚洲人成毛片在线播放| 亚洲成人激情综合网| 美女福利视频网| 91在线视频播放| 污污视频在线免费| 鲁大师成人一区二区三区| 樱空桃在线播放| 国产一区2区| 国产成人精品福利一区二区三区| 色猫猫成人app| 欧美精品18videosex性欧美| 2017亚洲天堂1024| 日韩av在线免播放器| 91久久久久国产一区二区| 欧美日韩国内自拍| 久久久精品国产sm调教| 国产精品每日更新在线播放网址| 影音先锋黄色资源| 国产精品资源网站| 天天操,天天操| 亚洲一区欧美二区| 国产在线视频综合| 图片区亚洲欧美小说区| 青青草成人网| 自拍亚洲一区| 精品欧美日韩| 东京久久高清| 91久久国产综合久久蜜月精品| www.久久| 国产精品成久久久久三级| 鲁鲁在线中文| 久久久在线观看| 在线中文字幕第一页| 久久精品小视频| 91这里只有精品| 在线观看日韩专区| 黑人与亚洲人色ⅹvideos| 日韩精品在线看| 天天av综合网| 亚洲精品电影网在线观看| 成人av一区二区三区在线观看| 91精品国产91久久久久久一区二区| 在线观看毛片av| 精品视频全国免费看| 免费观看日批视频| 色综合婷婷久久| 亚洲婷婷综合网| 欧美日韩亚洲视频一区| 好吊操这里只有精品| 亚洲电影中文字幕在线观看| 免费日韩在线视频| 亚洲综合丝袜美腿| 亚洲精品在线观看av| 亚洲动漫第一页| 精品成人av一区二区在线播放| 香蕉加勒比综合久久| 国产成人啪精品午夜在线观看| 一区二区高清视频在线观看| 欧美交换国产一区内射| 亚洲午夜久久久久久久久电影院 | 欧美性xxxxx极品娇小| 国产精品7777777| 欧美日韩国产中文字幕 | 精品在线免费观看| 亚洲制服中文字幕| 国产91精品免费| 国产十八熟妇av成人一区| 成+人+亚洲+综合天堂| 黄色a一级视频| 国产日本亚洲高清| 免费成人深夜蜜桃视频| 樱桃视频在线观看一区| 日本少妇性生活| 欧美性xxxx18| 在线观看中文字幕码| 欧美一级爆毛片| 少妇一区二区三区四区| 亚洲男人天堂2019| 五月香视频在线观看| 美日韩精品视频免费看| √天堂8资源中文在线| 日本精品视频在线观看| 国产亚洲欧美日韩精品一区二区三区| 成人免费激情视频| 国内精品偷拍| 少妇免费毛片久久久久久久久| 99久久99视频只有精品| 欧美激情亚洲天堂| 天堂成人国产精品一区| 不卡中文字幕在线观看| 成人美女在线视频| 国产精品情侣呻吟对白视频| 亚洲日本乱码在线观看| 国产成人精品a视频一区| 欧美自拍偷拍一区| 亚洲国产精品一| 亚洲一级一级97网| av网站在线免费看推荐| 26uuu另类亚洲欧美日本一| 欧美videos粗暴| 国产一区二区中文字幕免费看| 欧洲毛片在线视频免费观看| 欧美做暖暖视频| 日日摸夜夜添夜夜添精品视频 | 亚洲欧洲国产精品一区| 欧美日产一区二区三区在线观看| 99九九热只有国产精品| 99精品视频在线看| 国产精品一二一区| 黄色av免费播放| 午夜私人影院久久久久| 欧美日本国产一区| 色一情一乱一伦一区二区三区日本| 日韩精品乱码免费| 国产精品无码自拍| 国产丝袜在线精品| 黄色小视频在线免费看| 欧美日韩一区二区三区高清| 天堂中文在线观看视频| xxx一区二区| 欧美色网一区| 高清国产在线一区| 水蜜桃久久夜色精品一区| 人人妻人人添人人爽欧美一区| 九九国产精品视频| 国产 欧美 在线| 精品国产福利在线| 成人av手机在线| 久久精品91久久香蕉加勒比| 色老太综合网| 精品亚洲欧美日韩| 国产一区日韩欧美| 爽爽爽在线观看| 国产日韩欧美精品一区| 天堂网一区二区三区| 日韩午夜av一区| 日本三级在线视频| 欧美在线影院在线视频| 另类尿喷潮videofree| 久久综合亚洲精品| 久久99国产精品久久| 纪美影视在线观看电视版使用方法| 欧美日韩在线视频首页| 黄色片一区二区| 欧美高跟鞋交xxxxxhd| 精品亚洲a∨一区二区三区18| 亚洲日本欧美在线| 麻豆一区二区在线| 久久久久久久久久97| 欧美美女激情18p| 麻豆视频在线| 亚洲综合中文字幕68页| 亚洲成人tv| 国产5g成人5g天天爽| 亚洲欧洲国产日韩| 国产男男gay体育生网站| 久久夜色精品国产| 欧洲一区在线| 亚洲理论电影在线观看| 成人黄色小视频在线观看| 国产亚洲精品久久久久久无几年桃 | 91丨九色丨蝌蚪丨老版| 美女网站在线看| 久久久久久一区二区三区 | 成人日韩av在线| 亚洲成人二区| 欧美熟妇精品一区二区| 午夜精品久久久久久久99水蜜桃| 天堂在线视频免费观看| 欧美在线不卡区| 三区四区在线观看| 欧美日韩性生活| av免费在线网站| 国产在线一区二区三区欧美| 99pao成人国产永久免费视频| 久久亚洲AV成人无码国产野外 | 日韩成人在线视频网站| 蜜臀av在线播放| 国产区一区二区三区| 国产欧美日本| 亚洲精品国产精品国自产网站| 欧美在线播放高清精品| 免费在线观看av| 国产精品yjizz| 首页国产欧美久久| 小向美奈子av| 亚洲二区中文字幕| 怡红院成人在线| 日本xxxxx18| 97久久超碰精品国产| 特级西西444www高清大视频| 久久久精品一区二区| 国产成人tv| 日韩爱爱小视频| 亚洲午夜激情av| 第一福利在线| 99久久精品久久久久久ai换脸| 国产精品人人爽人人做我的可爱| 波多野结衣家庭教师在线观看| 欧美成人一区二区三区片免费 | 国产偷人妻精品一区| 欧美日韩一区二区欧美激情| 免费在线国产视频| 日本精品二区| 成人午夜视频网站| 国产一区二区自拍视频| 全亚洲最色的网站在线观看| 欧美一区不卡|