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

LangChain實戰:大語言模型理解代碼庫

原創 精選
人工智能
隨著LLM(大語言模型)的發展,最近流行起利用大語言模型對源代碼進行分析的潮流。網絡博主紛紛針對GitHub Co-Pilot、Code Interpreter、Codium和Codeium上的代碼進行分析。我們也來湊個熱鬧,利用OpenAI 的GPT-3.5-Turbo和LangChain對LangChain的源代碼進行分析。

作者 | 崔皓

審校 | 重樓

摘要

隨著LLM(大語言模型)的發展,最近流行起利用大語言模型對源代碼進行分析的潮流。網絡博主紛紛針對GitHub Co-Pilot、Code InterpreterCodiumCodeium上的代碼進行分析。我們也來湊個熱鬧,利用OpenAI 的GPT-3.5-Turbo和LangChain對LangChain的源代碼進行分析。

開篇

眾所周知,作為程序員經常會和源代碼打交道,很多情況下,當程序員遇到新代碼庫,或者是遺留項目的代碼庫,都有些手足無措。特別是要在已有的代碼庫中進行修改,那更是舉步維艱,生怕走錯一步成千古恨。例如:不清楚類,方法之間的關系,不清楚函數之間的業務邏輯。不過現在不用擔心了,有了大語言模型的加持,已讓閱讀代碼不是難事,對代碼庫的整體分析也是小菜一碟。

總結來說,可以通過大語言模型進行如下操作:

1. 通過對代碼庫進行問答,以了解其工作原理。

2. 利用LLM提供重構或改進建議。

3. 使用LLM對代碼進行文檔化。

今天我們就從代碼庫問答開始,帶大家手把手編寫代碼庫問答的程序。

整體介紹

首先,我們來整理一些思路,如圖1 所示。我們會先下載LangChain的源代碼,將source code的目錄以及目錄下面的所有源代碼文件保存到磁盤上。然后再對其進行加載和轉換,也就是圖中紅色的部分。將這些代碼文件切割成小的文件塊,用來Embedding操作。也就是將其嵌入到向量數據庫中,圖中橙色的部分。接著,圖中最右邊用戶會請求大模型,這里的模型我們使用GPT-3.5-Turbo,請求模型提問與LangChain源代碼相關的問題,例如:“在LangChain中如何初始化ReAct agent “。此時,GPT-3.5-Turbo的大語言模型會從向量數據庫中獲取相關信息,并且返回給用戶。

圖1 源代碼庫提問思路整理圖1 源代碼庫提問思路整理

具體來說,可以采用一種分割策略,其機制由如下幾個步驟組成:

1. 將代碼中的每個頂級函數和類加載到單獨的文檔中。

2. 將剩余部分加載到另一個獨立的文檔中。

3. 保留關于每個分割來自何處的元數據信息。

不過,這些步驟都是由LangChain內部機制實現的, 我們只需要調用簡單的代碼就可以完成。

整個代碼的構建和處理過程如上面圖1 所示,接下來我們就可以編寫代碼,大概會分如下幾個步驟:

  1. 下載LangChain代碼
  2. 在VS Code導入代碼
  3. 安裝相關依賴
  4. 裝載LangChain的源代碼文件
  5. 切割文件
  6. 嵌入到向量數據庫
  7. 利用大模型進行查詢
  8. 返回查詢結果

下面,我們就按照步驟來逐一介紹。

下載LangChain代碼

首先有請我們的主角LangChain源代碼登場。 如圖2 所示,可以通過訪問地址https://github.com/langchain-ai/langchain,來查看源代碼庫。

圖2 LangChain源代碼庫圖2 LangChain源代碼庫

當然可以通過Clone方法下載代碼,或者使用如圖3所示的方式,直接下載zip包然后解壓。

圖3 下載LangChain源代碼圖3 下載LangChain源代碼

下載之后進行解壓,請記住解壓的目錄后面會用到。

在VS Code導入代碼

在解壓LangChain的源代碼庫之后,將其導入到VS Code中。 如圖3 所示,在VS Code中加載,在LANGCHAIN-MASTER目錄下面的 /libs/langchain/langchain下面就是我們的目標目錄了。里面存放著LangChain的源代碼,接下來就需要對這個目錄進行掃描讀取器中的文件。

圖3LangChain代碼庫所在位置圖3LangChain代碼庫所在位置

安裝相關依賴

在對代碼庫進行加載之前我們先創建對應的Jupyter Notebook文件。如圖4 所示,為了方便我們在源代碼的根目錄下面創建chat_with_code.ipynb文件。

圖4 源代碼文件結構圖4 源代碼文件結構

在文件中加入一些依賴包如下,分別加載了OpenAI的包,它是用來應用GPT-3.5-Turbo模型的。Tiktoken 是用來處理NLP(自然語言處理)任務的,例如:分詞,嵌入,計算文本長度。ChromDB 是向量數據庫的包,源代碼文件會保存在這里,以便后續查詢。另外,LangChain的包是進行一些操作的腳手架,少了它程序玩不轉。

#引入依賴包
#openai gpt 模型
#tiktoken NLP 處理
#chromadb 向量數據庫
#langchain llm 腳手架
pip install openai tiktoken chromadb langchain

安裝完了依賴包之后,需要獲取環境變量配置。因為要使用OpenAI的API去調用大模型,所以需要加入如下代碼:

#通過環境配置的方式獲取openai 訪問api的key
import dotenv
dotenv.load_dotenv()

需要說明的是,我們在源代碼根目錄下面創建了一個”.env”文件,文件中寫入如下代碼

OPENAI_API_KEY= openaikey

用來存放OpenAI的 key。

裝載LangChain的源代碼文件

引入依賴包之后就可以加載LangChain的源代碼文件了。 如下代碼,我們先引入幾個LangChain的Class幫助我們加載代碼。

#基于編程語言的字符切割
from langchain.text_splitter import Language
#大文件的裝載
from langchain.document_loaders.generic import GenericLoader
#解析編程語言的語法
from langchain.document_loaders.parsers import LanguageParser
  • langchain.text_splitter 中的Language可以幫助我們基于編程語言進行文件的切割。
  • langchain.document_loaders.generi中的GenericLoader可以進行大文件的加載,因為可能會遇到類文件比較大的情況。
  • langchain.document_loaders.parsers中的LanguageParser是用來對類和方法進行解析的。

接著定義源代碼所在的路徑

#定義源代碼所在的目錄
repo_path ="/Users/cuihao/doc/39 - GPT/langchain-master"

然后就可以開始加載Python文件了。

#加載文件(s)多個文件
loader = GenericLoader.from_filesystem(
    repo_path+"/libs/langchain/langchain",
    #加載所有目錄下的所有文件
    glob="**/*",
    #針對.py的文件進行加載
    suffixes=[".py"],
    #激活解析所需的最小行數
    parser=LanguageParser(language=Language.PYTHON, parser_threshold=500)
)
documents = loader.load()
len(documents)

從上面的代碼可以看出通過GenericLoaderfrom_filesystem方法進行多目錄下文件的加載。首先,傳入源代碼所在的根目錄。接著,通過glob 參數定義所有目錄下的所有文件是我們的目標文件。再就是定義處理文件的后綴是”.py”。最后,使用了LanguageParser方法針對Python進行解析,并且指定每次激活解析的代碼行數是 500。

切割文件

有了加載以后的文件,我們將其給到Documents變量中,接著就是對Documents進行切割。一般而言大模型都有輸入限制的要求,如下面代碼所示

#對加載好的py 文件進行切割
#ChatGPT 最大的輸入是2048
from langchain.text_splitter import RecursiveCharacterTextSplitter
python_splitter = RecursiveCharacterTextSplitter.from_language(
language=Language.PYTHON,
#每個切割之后的文件的大小 
chunk_size=2000,
#文件與文件之間的重合部分是200
chunk_overlap=200)
#將所有源代碼文件切割成小的文件塊,以便llm 能夠進行嵌入
texts = python_splitter.split_documents(documents)
len(texts)

這里利用LangChain.text_splitter包中的RecursiveCharacterTextSplitter函數對源代碼進行切割。文件塊的大小是2000字節,文件之間重合的部分是200字節。將切割好的文件塊賦給texts變量,這里的texts實際上是一個文件塊的數組,后面將會將這個數組嵌入到向量數據庫chroma中。

這里需要對文件塊切割的chunk_size和chunk_overlap兩個參數做一下說明。如圖5 所示,如果我們對文件按照長度進行切割,切割的文字很有可能丟失上下文。例如:“我們去公園玩好不好,如果天氣好的”,這樣一句話一定是不完整的,大模型在進行學習或者推理的時候會丟失一部分信息。在自然語言中是這樣,在代碼解析中也是如此。

圖5 自然語言的文本切割圖5 自然語言的文本切割

因此,我們在切割的時候會保存一部分文字塊的上下文信息。圖中“話我們就去”就是這部分信息,我們稱之為“overlap”也就是相互覆蓋的部分。這樣每個文字塊都可以保留它相鄰文字塊的部分信息,最大限度地保證了上下文信息的完整性,在代碼解析中我們也會沿用這種做法。

嵌入到向量數據庫

文件分塊完成以后,接下來將這些代碼形成的文件塊嵌入到向量數據庫中了。只有嵌入進去以后,才能方便后續用戶的查詢。如下代碼所示,利用OpenAI中的OpenAIEmbeddings函數將texts,也就是切割好的代碼文件保存到chroma的向量數據庫中。

from langchain.vectorstores import Chroma
from langchain.embeddings.openai import OpenAIEmbeddings
#將切割好的文件塊嵌入到向量數據庫中, chroma db
db = Chroma.from_documents(texts, OpenAIEmbeddings(disallowed_special=()))
#定義如何查詢代碼
retriever = db.as_retriever(
#Maximal Marginal Relevance (最大邊際相關性)= 相關性 + 多樣性
search_type="mmr",# Also test "similarity"
#控制在檢索中返回的文檔數量
search_kwargs={"k":8},
)

不僅如此,還針對向量數據庫創建了Retriever 作為索引器,幫助后續查找。其中有兩個參數,第一個search_type定義的是mmr,這個是Maximal Marginal Relevance (最大邊際相關性)的縮寫。是一種相關性查詢的方式,同時考慮了查詢目標的相關性和多樣性。還有一個參數search_kwargs 定義了k 8,這個是匹配相關文檔的數量。

利用大模型進行查詢

經過上面的步驟離我們的目標已經不遠了。創建GPT-3.5-Turbo模型的查詢是當務之急。如下代碼所示,引入ChatOpenAI函數創建GPT-3.5-Turbo的模型實體。接著使用ConversationSummaryMemory創建有記憶的對話,最重要的是使用ConversationalRetrievalChain,從名字上可以看出來是基于對話的索引器,它以Chain的方式存在。Chain是LangChain的核心組件,用來將其他組件,例如:Model I/O,DataConnection,Agent等組合使用。這里它將大模型(LLM),索引器(Retriever)以及記憶組件(Memory)整合在一起進行問答響應。

#調用llm gpt-3.5-turbo 進行查詢
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationSummaryMemory
from langchain.chains import ConversationalRetrievalChain
llm = ChatOpenAI(model_name="gpt-3.5-turbo")
memory = ConversationSummaryMemory(llm=llm,memory_key="chat_history",return_messages=True)
#定義大語言模型 , 查詢方式, 記憶方式
qa = ConversationalRetrievalChain.from_llm(llm,retriever=retriever,memory=memory)

返回查詢結果

萬事備只欠東風,我們通過如下代碼開始提問。

question ="我如何處初始化 ReAct agent?"
result = qa(question)
result['answer']

GPT-3.5-Turbo的回復如下

要初始化 ReAct agent,您可以使用以下代碼:
from langchain.agents.react_agent import ReActDocstoreAgent
from langchain.tools import LookupTool, SearchTool
# 創建 LookupTool 和 SearchTool
lookup_tool = LookupTool()
search_tool = SearchTool()
# 創建 ReAct agent
react_agent =ReActDocstoreAgent(tools=[lookup_tool, search_tool])
在上述代碼中,我們首先導入 ReActDocstoreAgent 類和所需的工具類 LookupTool 和 SearchTool。
然后,我們創建了這些工具的實例,并將它們作為參數傳遞給 ReActDocstoreAgent 的構造函數,從而初始化了 ReAct agent。

回復中告訴我們要引入哪些類,以及ReAct Agent初始化需要依賴的類以及函數,把類和函數之間的依賴關系說清楚了。

總結

本文介紹了如何利用LangChain和GPT-3.5-Turbo來理解大型代碼庫。首先,我們下載了LangChain代碼庫并在VS Code中導入。然后,通過安裝必要的依賴包,如OpenAI、Tiktoken、ChromaDBLangChain,為后續操作做準備。接著,我們加載LangChain的源代碼文件,包括使用LanguageParser進行解析。隨后,我們將代碼文件切割成小塊,以滿足大模型的輸入要求。這些切割后的代碼塊被嵌入到Chroma向量數據庫中,并創建了一個用于查詢的Retriever,它使用Maximal Marginal Relevance進行相關性查詢,并限制返回的文檔數量。最后,我們使用GPT-3.5-Turbo來進行代碼庫的查詢,實現了代碼的問答和解釋,使代碼庫的理解變得更加容易。

作者介紹

崔皓,51CTO社區編輯,資深架構師,擁有18年的軟件開發和架構經驗,10年分布式架構經驗。

責任編輯:華軒 來源: 51CTO
相關推薦

2025-05-29 08:30:00

LLM大語言模型AI

2024-07-12 14:53:42

2024-03-21 09:00:00

大語言模型人工智能

2025-01-20 07:58:51

2024-02-26 08:15:43

語言模型低代碼

2024-10-25 19:32:58

ChatGPT

2024-07-15 08:31:19

2024-08-19 09:42:00

模型MIT

2023-05-19 15:58:52

2024-12-19 08:00:00

人工智能LLMLangChain

2023-02-27 08:07:47

語言模型數據庫故障

2025-02-28 08:00:00

大語言模型DeepSeek機器學習

2023-07-21 15:30:00

微軟代碼TypeChat

2024-01-12 10:29:26

2020-01-07 14:37:59

代碼開發AI

2025-09-28 04:00:00

CWM世界模型語言模型

2025-04-22 08:08:37

2021-05-24 06:40:59

C語言Linux軟件庫
點贊
收藏

51CTO技術棧公眾號

91激情视频在线| 国产精品视频免费一区二区三区| 国产呦小j女精品视频| se69色成人网wwwsex| 中文字幕日韩一区| 久久精品国产美女| 中文字幕在线观看第二页| 欧美日韩 国产精品| 亚洲精选一区二区| 99九九精品视频| 国模冰冰炮一区二区| 日韩码欧中文字| 精品日本一区二区三区| 91亚洲国产成人久久精品麻豆| 欧美人成网站| 最近日韩中文字幕中文| 亚洲色图欧美日韩| 亚洲福利影视| 色综合久久中文字幕| 51xx午夜影福利| 国产最新视频在线| 国产不卡在线视频| 国产精品高清在线观看| 久久亚洲国产成人精品性色| 久久国产精品成人免费观看的软件| 精品裸体舞一区二区三区| 亚洲黄色av网址| 在线免费三级电影网站| 一区二区三区资源| 亚洲在线播放电影| 国内精品一区视频| 91香蕉视频mp4| 国产精品日韩一区二区免费视频 | 亚洲欧美在线另类| 欧美色图亚洲自拍| 午夜小视频免费| 高清在线成人网| 亚洲综合最新在线| 国产免费视频一区二区三区| 日韩电影一区二区三区| 日本不卡高字幕在线2019| 国产在线视频99| 国产精品v日韩精品v欧美精品网站| 日韩在线观看网址| 五月激情四射婷婷| 欧美一级本道电影免费专区| 亚洲视频一区二区| 美女100%无挡| 国产精品羞羞答答在线观看| 日韩精品视频在线播放| a级片在线观看视频| 51精品国产| 精品久久人人做人人爽| 少妇精品无码一区二区| 亚洲精选av| 精品久久久久久久久久久久包黑料| 国产精品999.| 日本高清精品| 亚洲成人久久电影| 国产性生活毛片| 欧美精品国产白浆久久久久| 亚洲高清av在线| 久久偷拍免费视频| 在线日韩一区| 尤物yw午夜国产精品视频| 国产美女永久免费无遮挡| 日韩欧美一区二区三区免费看| 中文字幕亚洲一区在线观看 | 免费a级片在线观看| 成人免费观看男女羞羞视频| 国产在线一区二区三区四区| 色播色播色播色播色播在线| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产一级精品视频| 久久在线91| 国产欧美日韩丝袜精品一区| 国产黄色av片| www.欧美.com| 日韩视频在线播放| а√天堂资源地址在线下载| 亚洲综合色网站| 日本一道本久久| av在线一区不卡| 日韩欧美第一区| 欧美色图亚洲激情| 99久久夜色精品国产亚洲96| 欧美黑人一级爽快片淫片高清| 国产成人免费观看视频| 蜜臀久久99精品久久久画质超高清| 91亚洲永久免费精品| 五月天婷婷社区| 国产精品电影一区二区| 成人在线播放网址| 123成人网| 亚洲白拍色综合图区| av永久免费观看| 伊人激情综合| 成人精品久久久| 亚洲 另类 春色 国产| 国产精品―色哟哟| 极品美女扒开粉嫩小泬| 精品午夜视频| 国产亚洲欧洲黄色| 日本熟妇一区二区| 国产一区二区三区在线观看免费 | 亚洲一区二区三区四区不卡| 成人中文字幕av| 日本一区二区三区播放| 国产一区二区三区视频在线观看| 久久精品一区二区三| 日韩二区三区在线观看| 精品国产91亚洲一区二区三区www 精品国产_亚洲人成在线 | 亚洲精品国产福利| 日韩成人短视频| 老司机午夜免费精品视频| 99久久久久国产精品免费| 91av资源在线| 色狠狠av一区二区三区| 欧美xxxxx精品| 国产精品扒开腿做爽爽爽软件| 国产精品视频精品| 日韩电影在线观看完整版| 一区二区三区中文免费| 亚洲综合激情视频| 精品成av人一区二区三区| 69久久夜色精品国产69| 亚洲av无码国产精品久久不卡| 国产精品入口麻豆九色| 日韩精品免费播放| 国产亚洲一区二区三区啪| 97超级碰碰人国产在线观看| 超碰人人人人人人| 亚洲男人的天堂在线观看| 手机在线看福利| 久久超碰99| 欧美洲成人男女午夜视频| 黄色aaa毛片| 亚洲在线成人精品| 动漫av在线免费观看| 你懂的成人av| 91成人伦理在线电影| 黄色精品免费看| 欧美丰满少妇xxxxx高潮对白| 欧美黄色高清视频| 日本三级亚洲精品| 亚洲视频在线观看日本a| 欧美专区福利免费| 亚洲欧美日韩中文在线| 欧美一区二区三区网站| 国产日韩欧美高清在线| 日本va中文字幕| 日韩欧美国产精品综合嫩v| 国产色视频一区| 很黄的网站在线观看| 5566中文字幕一区二区电影| 久久精品日韩无码| 国产精品自拍网站| 97碰在线视频| 女同另类激情重口| 热99在线视频| 1区2区3区在线观看| 欧美日韩一本到| 日本午夜在线观看| 成人性生交大片| 北条麻妃69av| 日韩精品中文字幕第1页| 成人av资源在线播放| av毛片在线看| 亚洲激情成人网| 无码人妻精品一区二| 国产精品理论片| 两女双腿交缠激烈磨豆腐| 亚洲午夜在线| 欧美日本亚洲| 国产 日韩 欧美| 97国产suv精品一区二区62| 日本人妖在线| 9191精品国产综合久久久久久| 老湿机69福利| 久久综合九色综合欧美就去吻| 成人性生生活性生交12| 欧美影视一区| 日本精品一区二区三区高清 久久| 久久精品超碰| 久久久久久一区二区三区 | 久久久亚洲国产美女国产盗摄 | 国产精品2024| 50路60路老熟妇啪啪| 99成人在线视频| 国严精品久久久久久亚洲影视 | 一级黄色毛毛片| 成人黄色一级视频| 99热这里只有精品在线播放| 欧美日韩一视频区二区| 日韩.欧美.亚洲| 99精品在免费线中文字幕网站一区| 欧美一性一乱一交一视频| 麻豆视频在线观看免费网站| 亚洲精品不卡在线| 国产麻豆91视频| 欧美性xxxxhd| 毛片a片免费观看| 欧美韩国日本不卡| 国产精品第七页| 国产一区二三区| 欧美三级理论片| 午夜亚洲性色视频| 人妻无码一区二区三区四区| 欧美亚洲国产精品久久| 精品蜜桃一区二区三区| 蜜桃精品视频| 国产美女91呻吟求| 在线看的毛片| 久久久久亚洲精品成人网小说| 午夜不卡视频| 亚洲女人被黑人巨大进入al| 亚洲精品国产精品国| 欧美日韩视频一区二区| www.久久久久久久| 午夜精品久久久久久不卡8050| av最新在线观看| 国产欧美视频一区二区| 青青草视频播放| 成人免费高清在线观看| 手机在线播放av| 国内精品国产三级国产a久久| 免费观看成人在线视频| 国产欧美在线| 亚洲熟妇无码一区二区三区| 国产一区日韩欧美| 加勒比海盗1在线观看免费国语版| 四虎国产精品免费观看 | 影音先锋成人在线电影| 亚洲日本精品一区| 欧美在线色图| 视频一区不卡| 成人在线视频免费观看| 日韩精品一区二区三区色偷偷 | 亚洲图中文字幕| 欧美日韩国产综合视频| 日韩精品视频免费| 神马精品久久| 亚洲免费福利视频| 暖暖视频在线免费观看| 精品视频—区二区三区免费| 亚洲AV成人无码一二三区在线| 亚洲精品一线二线三线无人区| www.蜜臀av.com| 精品国精品自拍自在线| 高潮一区二区三区乱码| 亚洲福利视频免费观看| 五月婷婷久久久| 亚洲老司机av| 黄色av网站在线| 综合网中文字幕| 黄色网在线免费看| 久久久久久国产免费 | 粉嫩av一区二区三区免费野| 在线观看亚洲欧美| 欧美性猛交xxxx乱大交3| 亚洲国产精品无码久久久| 欧美亚一区二区| 国产成人精品一区二三区四区五区| 日韩精品一区二区三区在线 | www.com亚洲| 欧美色视频一区| 国产精品无码一区二区桃花视频| 欧美一级淫片007| 高潮毛片7777777毛片| 日韩精品在线观看网站| 3d成人动漫在线| 欧美激情一区二区三级高清视频 | 国产综合欧美| 日本免费黄视频| 麻豆91精品91久久久的内涵| 97免费公开视频| 91香蕉国产在线观看软件| 免费看的黄色录像| 亚洲综合在线第一页| 亚洲不卡视频在线观看| 欧美日韩精品欧美日韩精品 | 成人一区二区三区视频在线观看| www.88av| 日韩一区中文字幕| 成人精品在线看| 欧美美女黄视频| 凸凹人妻人人澡人人添| 神马久久久久久| 韩国精品一区| 国产在线观看91精品一区| 亚洲专区**| 青青成人在线| 在线观看视频免费一区二区三区 | 国产成人精品午夜视频免费| 中文字幕在线免费看线人| 最近日韩中文字幕| 精品人妻无码一区二区性色| 欧美二区在线观看| 黄色美女网站在线观看| 欧美高清视频一区二区| 91成人抖音| 精品乱码一区二区三区| 国产精品久久久久久影院8一贰佰| 老太脱裤子让老头玩xxxxx| 蜜桃av一区二区三区| 制服丝袜第一页在线观看| 亚洲欧洲99久久| 人人爽人人爽人人片av| 日韩精品一区二区三区在线观看 | 日韩免费特黄一二三区| 免费在线观看视频a| 国内精品伊人久久久久av一坑| 成人午夜福利一区二区| 亚洲国产精品欧美一二99| 国产又粗又大又爽| 永久免费精品影视网站| 韩国成人漫画| 国外成人在线视频网站| 国产精品国码视频| 伊人五月天婷婷| 国产精品伦一区二区三级视频| 男人天堂2024| 亚洲精品乱码久久久久久金桔影视| 99视频免费在线观看| 国产精品爽爽爽爽爽爽在线观看| 青青草原在线亚洲| 欧美男女爱爱视频| 懂色av一区二区夜夜嗨| 人妻少妇精品一区二区三区| 欧美日韩免费一区二区三区视频| 欧美女优在线| 欧洲永久精品大片ww免费漫画| 麻豆一区一区三区四区| 久久99久久久久久| 成人黄色网址在线观看| 免费在线一区二区三区| 日韩久久精品一区| 视频在线观看入口黄最新永久免费国产 | 国产精品一区二区男女羞羞无遮挡| 污污视频网站在线免费观看| 在线这里只有精品| 激情综合闲人网| 国产精品久久久久91| 国产成人三级| 人人爽人人av| 国产精品热久久久久夜色精品三区 | 国产人成网在线播放va免费| 91精品久久久久久久久青青 | 97精品人妻一区二区三区| 中文字幕在线看视频国产欧美| av成人在线观看| 一本久道久久综合狠狠爱亚洲精品| 蜜臀av国产精品久久久久 | 午夜国产精品一区| 天天干在线观看| 日韩69视频在线观看| 狠狠色丁香婷婷综合影院| 网站一区二区三区| 17c精品麻豆一区二区免费| av中文字幕免费在线观看| 久久99久久99精品中文字幕| 波多野结衣欧美| aa在线免费观看| 亚洲国产成人午夜在线一区| 97超视频在线观看| 欧美激情亚洲激情| 亚洲va久久久噜噜噜久久| 男女无套免费视频网站动漫| |精品福利一区二区三区| 亚洲大尺度视频| 奇米4444一区二区三区| 欧美丰满日韩| 精品一区二区三区四区五区六区| 欧美性xxxx极品高清hd直播| 国产专区在线| 91免费看片在线| 99riav国产精品| 九九热久久免费视频| 日韩精品在线网站| 精品视频在线一区二区在线| 91看片淫黄大片91| 久久综合狠狠综合| 国产女人18毛片18精品| 97精品国产97久久久久久| 欧美日中文字幕| 日本美女视频网站| 欧美性受xxxx黑人xyx性爽| 日本动漫理论片在线观看网站| 久久久久久九九| 国产乱码精品一区二区三区av| 亚洲精品1区2区3区| xvideos亚洲| 日韩动漫一区| 亚洲午夜精品一区| 欧美午夜影院在线视频| 18videosex性欧美麻豆| 日本一区不卡| 99视频一区二区三区| 91国内精品视频| 欧洲成人免费视频|