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

C# 下的LLamaSharp: 高效的本地LLM推理庫,自己寫GPT

人工智能
為了獲得高性能,LLamaSharp 與從 C++ 編譯的本地庫交互,這些庫稱為 backends。我們為 Windows、Linux 和 Mac 提供了 CPU、CUDA、Metal 和 OpenCL 的后端包。您不需要編譯任何 C++ 代碼,只需安裝后端包即可。

LLamaSharp 是一個跨平臺庫,用于在本地設備上運行 LLaMA/LLaVA 模型(以及其他模型)?;?llama.cpp,LLamaSharp 在 CPU 和 GPU 上的推理都非常高效。通過高級 API 和 RAG 支持,您可以方便地在應用程序中部署大型語言模型(LLM)。

GitHub 地址

https://github.com/SciSharp/LLamaSharp

圖片圖片

下載代碼:

git clone https://github.com/SciSharp/LLamaSharp.git

快速開始

安裝

為了獲得高性能,LLamaSharp 與從 C++ 編譯的本地庫交互,這些庫稱為 backends。我們為 Windows、Linux 和 Mac 提供了 CPU、CUDA、Metal 和 OpenCL 的后端包。您不需要編譯任何 C++ 代碼,只需安裝后端包即可。

安裝 LLamaSharp 包:

PM> Install-Package LLamaSharp

圖片圖片

安裝一個或多個后端包,或使用自編譯的后端:

  • LLamaSharp.Backend.Cpu: 適用于 Windows、Linux 和 Mac 的純 CPU 后端。支持 Mac 的 Metal (GPU)。
  • LLamaSharp.Backend.Cuda11: 適用于 Windows 和 Linux 的 CUDA 11 后端。
  • LLamaSharp.Backend.Cuda12: 適用于 Windows 和 Linux 的 CUDA 12 后端。
  • LLamaSharp.Backend.OpenCL: 適用于 Windows 和 Linux 的 OpenCL 后端。

(可選)對于 Microsoft semantic-kernel 集成,安裝 LLamaSharp.semantic-kernel 包。

(可選)要啟用 RAG 支持,安裝 LLamaSharp.kernel-memory 包(該包僅支持 net6.0 或更高版本),該包基于 Microsoft kernel-memory 集成。

模型準備

LLamaSharp 使用 GGUF 格式的模型文件,可以從 PyTorch 格式(.pth)和 Huggingface 格式(.bin)轉換而來。獲取 GGUF 文件有兩種方式:

  1. 在 Huggingface 搜索模型名稱 + 'gguf',找到已經轉換好的模型文件。
  2. 自行將 PyTorch 或 Huggingface 格式轉換為 GGUF 格式。請按照 llama.cpp readme 中的說明使用 Python 腳本進行轉換。

一般來說,我們推薦下載帶有量化的模型,因為它顯著減少了所需的內存大小,同時對生成質量的影響很小。

簡單對話

LLamaSharp 提供了一個簡單的控制臺演示,展示了如何使用該庫進行推理。以下是一個基本示例:

圖片圖片

using LLama.Common;
using LLama;


namespace appLLama
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Chart();
        }


        static async Task Chart()
        {
            string modelPath = @"E:\Models\llama-2-7b-chat.Q4_K_M.gguf"; // change it to your own model path.


            var parameters = new ModelParams(modelPath)
            {
                ContextSize = 1024, // The longest length of chat as memory.
                GpuLayerCount = 5 // How many layers to offload to GPU. Please adjust it according to your GPU memory.
            };
            using var model = LLamaWeights.LoadFromFile(parameters);
            using var context = model.CreateContext(parameters);
            var executor = new InteractiveExecutor(context);


            // Add chat histories as prompt to tell AI how to act.
            var chatHistory = new ChatHistory();
            chatHistory.AddMessage(AuthorRole.System, "Transcript of a dialog, where the User interacts with an Assistant named Bob. Bob is helpful, kind, honest, good at writing, and never fails to answer the User's requests immediately and with precision.");
            chatHistory.AddMessage(AuthorRole.User, "Hello, Bob.");
            chatHistory.AddMessage(AuthorRole.Assistant, "Hello. How may I help you today?");


            ChatSession session = new(executor, chatHistory);


            InferenceParams inferenceParams = new InferenceParams()
            {
                MaxTokens = 256, // No more than 256 tokens should appear in answer. Remove it if antiprompt is enough for control.
                AntiPrompts = new List<string> { "User:" } // Stop generation once antiprompts appear.
            };


            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write("The chat session has started.\nUser: ");
            Console.ForegroundColor = ConsoleColor.Green;
            string userInput = Console.ReadLine() ?? "";


            while (userInput != "exit")
            {
                await foreach ( // Generate the response streamingly.
                    var text
                    in session.ChatAsync(
                        new ChatHistory.Message(AuthorRole.User, userInput),
                        inferenceParams))
                {
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write(text);
                }
                Console.ForegroundColor = ConsoleColor.Green;
                userInput = Console.ReadLine() ?? "";
            }
        }
    }
}
  1. 模型路徑與參數設置:指定模型路徑,以及上下文的大小和 GPU 層的數量。
  2. 加載模型并創建上下文:從文件中加載模型,并使用參數初始化上下文。
  3. 執行器與對話歷史記錄:定義一個 InteractiveExecutor,并設置初始的對話歷史,包括系統消息和用戶與助手的初始對話。
  4. 會話與推理參數:建立對話會話 ChatSession,設置推理參數,包括最大 token 數和反提示語。
  5. 用戶輸入與生成回復:開始聊天會話并處理用戶輸入,使用異步方法流式地生成助手的回復,并根據反提示語停止生成。

圖片圖片

你會發現中文支持不太好,即使用了千問的量化庫。

中文處理官方例子

我這換成了千問的庫:

using LLama.Common;
using LLama;
using System.Text;


namespace appLLama
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Register provider for GB2312 encoding
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            Run();
        }


        private static string ConvertEncoding(string input, Encoding original, Encoding target)
        {
            byte[] bytes = original.GetBytes(input);
            var convertedBytes = Encoding.Convert(original, target, bytes);
            return target.GetString(convertedBytes);
        }


        public static async Task Run()
        {
            // Register provider for GB2312 encoding
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);


            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("This example shows how to use Chinese with gb2312 encoding, which is common in windows. It's recommended" +
                " to use https://huggingface.co/hfl/chinese-alpaca-2-7b-gguf/blob/main/ggml-model-q5_0.gguf, which has been verified by LLamaSharp developers.");
            Console.ForegroundColor = ConsoleColor.White;


            string modelPath = @"E:\LMModels\ay\Repository\qwen1_5-7b-chat-q8_0.gguf";// @"E:\Models\llama-2-7b-chat.Q4_K_M.gguf";


            var parameters = new ModelParams(modelPath)
            {
                ContextSize = 1024,
                Seed = 1337,
                GpuLayerCount = 5,
                Encoding = Encoding.UTF8
            };
            using var model = LLamaWeights.LoadFromFile(parameters);
            using var context = model.CreateContext(parameters);
            var executor = new InteractiveExecutor(context);


            ChatSession session;
            ChatHistory chatHistory = new ChatHistory();


            session = new ChatSession(executor, chatHistory);


            session
                .WithHistoryTransform(new LLamaTransforms.DefaultHistoryTransform());


            InferenceParams inferenceParams = new InferenceParams()
            {
                Temperature = 0.9f,
                AntiPrompts = new List<string> { "用戶:" }
            };


            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("The chat session has started.");


            // show the prompt
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write("用戶:");
            Console.ForegroundColor = ConsoleColor.Green;
            string userInput = Console.ReadLine() ?? "";


            while (userInput != "exit")
            {
                // Convert the encoding from gb2312 to utf8 for the language model
                // and later saving to the history json file.
                userInput = ConvertEncoding(userInput, Encoding.GetEncoding("gb2312"), Encoding.UTF8);


                if (userInput == "save")
                {
                    session.SaveSession("chat-with-kunkun-chinese");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("Session saved.");
                }
                else if (userInput == "regenerate")
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("Regenerating last response ...");


                    await foreach (
                        var text
                        in session.RegenerateAssistantMessageAsync(
                            inferenceParams))
                    {
                        Console.ForegroundColor = ConsoleColor.White;


                        // Convert the encoding from utf8 to gb2312 for the console output.
                        Console.Write(ConvertEncoding(text, Encoding.UTF8, Encoding.GetEncoding("gb2312")));
                    }
                }
                else
                {
                    await foreach (
                        var text
                        in session.ChatAsync(
                            new ChatHistory.Message(AuthorRole.User, userInput),
                            inferenceParams))
                    {
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.Write(text);
                    }
                }


                Console.ForegroundColor = ConsoleColor.Green;
                userInput = Console.ReadLine() ?? "";


                Console.ForegroundColor = ConsoleColor.White;
            }
        }
    }
}

圖片圖片

Winform寫 一個簡單例子

圖片圖片

Chat類:

public class Chat
{
    ChatSession session;




    InferenceParams inferenceParams = new InferenceParams()
        {
            Temperature = 0.9f,
            AntiPrompts = new List<string> { "用戶:" }
        };


    private  string ConvertEncoding(string input, Encoding original, Encoding target)
        {
            byte[] bytes = original.GetBytes(input);
            var convertedBytes = Encoding.Convert(original, target, bytes);
            return target.GetString(convertedBytes);
        }


    public void Init()
        {
            // Register provider for GB2312 encoding
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);


            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("This example shows how to use Chinese with gb2312 encoding, which is common in windows. It's recommended" +
                " to use https://huggingface.co/hfl/chinese-alpaca-2-7b-gguf/blob/main/ggml-model-q5_0.gguf, which has been verified by LLamaSharp developers.");
            Console.ForegroundColor = ConsoleColor.White;


            string modelPath = @"E:\LMModels\ay\Repository\qwen1_5-7b-chat-q8_0.gguf";// @"E:\Models\llama-2-7b-chat.Q4_K_M.gguf";


            var parameters = new ModelParams(modelPath)
            {
                ContextSize = 1024,
                Seed = 1337,
                GpuLayerCount = 5,
                Encoding = Encoding.UTF8
            };


            var model = LLamaWeights.LoadFromFile(parameters);
            var context = model.CreateContext(parameters);
            var executor = new InteractiveExecutor(context);
            var chatHistory = new ChatHistory();
            session = new ChatSession(executor, chatHistory);
            session
                .WithHistoryTransform(new LLamaTransforms.DefaultHistoryTransform());
        }


    public async Task Run(string userInput,Action<string> callback)
        {
            while (userInput != "exit")
            {
                userInput = ConvertEncoding(userInput, Encoding.GetEncoding("gb2312"), Encoding.UTF8);


                if (userInput == "save")
                {
                    session.SaveSession("chat-with-kunkun-chinese");


                }
                else if (userInput == "regenerate")
                {
                    await foreach (
                        var text
                        in session.RegenerateAssistantMessageAsync(
                            inferenceParams))
                    {
                        callback(ConvertEncoding(text, Encoding.UTF8, Encoding.GetEncoding("gb2312")));
                    }
                }
                else
                {
                    await foreach (
                        var text
                        in session.ChatAsync(
                            new ChatHistory.Message(AuthorRole.User, userInput),
                            inferenceParams))
                    {
                        callback(text);
                    }
                }


                userInput = "";
            }
        }
}

Form1界面事件:

public partial class Form1 : Form
{
    Chat chat = new Chat();
    public Form1()
    {
        InitializeComponent();
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        chat.Init();
    }


    private  void btnSend_Click(object sender, EventArgs e)
    {
        var call = new Action<string>(x =>
        {
            this.Invoke(() =>
            {
                txtLog.AppendText(x);
            });
        });
        //chat.Run(txtMsg.Text, call);


        Task.Run(() =>
        {
            chat.Run(txtMsg.Text, call);
        });


    }
}

更新例子可以去官網上看,寫的比較專業。

https://scisharp.github.io/LLamaSharp/0.13.0/

責任編輯:武曉燕 來源: 技術老小子
相關推薦

2024-08-13 08:23:43

LLamaSharpLLM推理庫

2024-03-25 14:22:07

大型語言模型GaLore

2025-10-10 02:00:00

2024-12-27 09:08:25

2025-02-25 10:21:15

2023-11-30 15:56:54

大型語言模型人工智能

2011-11-21 14:10:53

C#

2011-07-06 09:46:56

C#

2024-02-26 07:43:10

大語言模型LLM推理框架

2009-08-07 16:19:00

C#下數據庫編程

2009-08-07 16:19:00

C#下數據庫編程

2025-04-24 10:26:40

2023-05-09 06:54:34

2009-07-31 16:45:23

ASP.NET數據庫操

2024-03-12 10:05:47

大型語言模型

2025-06-11 02:30:00

2023-05-30 14:17:00

模型推理

2025-07-08 08:38:09

推理錨點LLM大模型

2011-02-23 08:50:22

C#.NETdynamic

2025-08-11 07:00:00

點贊
收藏

51CTO技術棧公眾號

欧美日韩色婷婷| 中文字幕亚洲影院| 免费精品99久久国产综合精品应用| www.精品视频| 日韩精品诱惑一区?区三区| 国产成人午夜视频| 日韩最新中文字幕电影免费看| 九九九九免费视频| 日本xxxx人| 欧美日韩视频| 91精品国产综合久久福利| 日本一区网站| 特级做a爱片免费69| 国产精品x8x8一区二区| 亚洲一区二区三区在线看| 91免费国产网站| 午夜精品一区二区三级视频| 天然素人一区二区视频| 久久蜜桃av一区二区天堂| 777精品视频| 日本护士做爰视频| 日本不卡网站| 久久人人97超碰com| 成人在线播放av| 杨钰莹一级淫片aaaaaa播放| 国产精品美女久久久久| 亚洲欧美日韩电影| 91视频在线免费观看| 欧美色图亚洲天堂| 国产精品x8x8一区二区| 欧美一区二区在线视频| 亚洲精品高清无码视频| 视频一区二区三区不卡| 欧美午夜精彩| 欧美精品乱人伦久久久久久| 国产精品美女在线播放| 99在线无码精品入口| 国产精品大片免费观看| 日韩禁在线播放| 黄色高清无遮挡| 免费在线观看黄色网| 国产精品综合在线视频| 992tv成人免费影院| 中文字幕另类日韩欧美亚洲嫩草| 久久在线视频| 精品国产乱码久久久久久图片| www国产精品内射老熟女| 韩国免费在线视频| 国产伦精品一区二区三区免费迷| 国产精品视频久久久| 国产精品免费人成网站酒店| 美女一区二区在线观看| 欧美影院精品一区| 99久久99久久精品| 韩国三级av在线免费观看| 久久人人爽爽爽人久久久| 你懂的网址一区二区三区| 91麻豆一区二区| 亚洲美女视频在线免费观看| 国产一区二区日韩| 久草福利在线观看| 最新中文字幕在线播放| 亚洲欧美自拍偷拍| 免费精品视频一区| 国产午夜视频在线观看| 国产精品99精品久久免费| 成人激情视频网| a级片在线免费看| 国产成人精品免费看| 国产精品xxx视频| 久久久久亚洲天堂| 成人中文视频| 久久天天躁日日躁| 人妻aⅴ无码一区二区三区| 阿v视频在线| 亚洲欧美日韩国产综合| 蜜桃臀一区二区三区| 男女污污视频在线观看| 国产精品一区二区在线观看不卡 | 亚洲精品一区在线| 色综合久久久久网| 欧美a级免费视频| av丝袜在线| 日韩毛片视频在线看| 久久av高潮av| 久久爱91午夜羞羞| 激情亚洲一区二区三区四区 | 国产xxxxxxxxx| 亚洲精品aa| 日本韩国欧美在线| 久草热视频在线观看| 成人福利片在线| 在线观看国产91| 欧美极品欧美精品欧美图片| 51漫画成人app入口| 一本大道久久a久久综合婷婷 | 国产成人亚洲综合色影视| 精品午夜一区二区三区| 亚洲成人精品女人久久久| 久久精品久久久精品美女| 欧美中文在线视频| 亚洲国产成人精品激情在线| 国产精品分类| 国产精品久久久久久久久久尿 | 国产69精品久久99不卡| 日本午夜精品一区二区三区| 台湾av在线二三区观看| 丁香激情综合国产| 国产精品12| 日韩一区免费视频| 国产精品午夜久久| 亚洲一区在线免费| 在线中文资源天堂| 中文字幕一区免费在线观看| 99精品视频网站| 中文字幕在线视频网站| 精品人在线二区三区| 91亚洲一线产区二线产区| 国产一区在线电影| 久久精品国产欧美亚洲人人爽| 欧美爱爱免费视频| 日韩成人午夜精品| 国产一区深夜福利| 国产女人高潮毛片| 国产福利一区二区三区在线视频| 性刺激综合网| av片在线观看网站| 午夜在线电影亚洲一区| 亚洲自偷自拍熟女另类| 亚洲91网站| 日韩成人中文字幕在线观看| 极品美妇后花庭翘臀娇吟小说| 丝袜美腿高跟呻吟高潮一区| 国产精品午夜视频| 在线免费观看视频网站| 国产一区二区精品久久| 国产传媒一区| 日韩三级电影视频| 黑人巨大精品欧美一区免费视频| 人妻av一区二区三区| 午夜精品毛片| 国内精久久久久久久久久人| 免费黄色小视频在线观看| 久久99九九99精品| 国产欧美日韩伦理| 成年午夜在线| 亚洲愉拍自拍另类高清精品| 欧美污视频网站| 亚洲精品动态| 精品国产欧美成人夜夜嗨| 中文字幕一区二区在线视频 | 求av网址在线观看| 精品视频一区二区三区免费| 国产精久久久久| 精品freesex老太交| 欧美尺度大的性做爰视频| 人人爽人人爽人人片av| 国产美女主播视频一区| 午夜啪啪福利视频| 久久爱91午夜羞羞| 国产一区av在线| 国产又粗又黄又爽视频| 亚洲欧美视频在线观看| 亚洲天堂2024| 亚洲一区在线| 国产成人综合精品| 人妻无码中文字幕| 欧美日韩国产影院| 国产传媒国产传媒| 国产在线精品一区二区三区不卡 | 久久香蕉av| 欧洲人成人精品| 啪啪一区二区三区| 午夜影院日韩| 岛国视频一区免费观看| 无遮挡爽大片在线观看视频 | 在线观看男女av免费网址| 欧美不卡在线视频| 国产精品久久久久久人| 日韩一区欧美一区| 成人午夜精品无码区| 日本欧美大码aⅴ在线播放| 国产在线一区二区三区播放| 亚洲人体影院| 久久久av网站| 亚洲欧洲精品视频| 亚洲一区二区影院| 久久久久久亚洲中文字幕无码| 在线视频免费在线观看一区二区| 日韩精品久久久| 国产精品一区三区在线观看| 91高清免费在线观看| 午夜精品一区| 亚洲精品久久久久| 国产乡下妇女做爰毛片| 国产不卡在线播放| 青青青国产在线视频| 欧美日韩 国产精品| 日韩av一区二区三区美女毛片| 国产一区二区av在线| 日本高清视频一区| 日本一级理论片在线大全| 国产亚洲精品综合一区91| 亚洲欧美另类综合| 香蕉加勒比综合久久| 四虎地址8848| 91丝袜呻吟高潮美腿白嫩在线观看| 日本韩国欧美在线观看| 国产精品久久久久久麻豆一区软件 | 免费在线欧美视频| 亚洲看片网站| 综合久久av| 欧美另类暴力丝袜| 粉嫩av一区二区夜夜嗨| 欧美三级在线看| 亚洲天堂一区在线| 亚洲免费在线播放| 日韩亚洲欧美中文字幕| 欧美激情一区在线| 日韩av自拍偷拍| 三级影片在线观看欧美日韩一区二区 | 黄视频在线观看网站| 欧美精品 国产精品| 日韩国产成人在线| 狠狠躁夜夜躁人人爽超碰91| 国产在线欧美在线| 久久久久一区二区三区四区| 91淫黄看大片| 国产精品久久久一区二区| 手机成人在线| 欧美系列电影免费观看 | 国产精品影院在线| 亚洲欧美一区二区精品久久久| 特级西西444www大胆免费看| 中文字幕日韩精品一区| 青青草自拍偷拍| 成人在线综合网| 少妇性l交大片7724com| 国产一区二区三区美女| 国产高清av片| 亚洲女人av| 久久美女福利视频| 美女国产精品| 青青在线视频免费观看| 欧美激情第二页| 日本一区不卡| sdde在线播放一区二区| 神马影院午夜我不卡| 色综合咪咪久久网| 一区高清视频| 亚洲欧洲美洲国产香蕉| 久久精品午夜一区二区福利| 国产不卡精品| 亚洲最大福利视频网站| 99精品国产一区二区三区2021| 国产精品久久久久久久久久 | 欧美三级韩国三级日本一级| 亚洲中文字幕在线观看| 欧美麻豆精品久久久久久| 国产乱码一区二区| 色婷婷综合久久久| 久久午夜鲁丝片| 欧美精品一级二级| 99国产精品欲| 精品国产不卡一区二区三区| 男男激情在线| 最近更新的2019中文字幕| 香蕉视频网站在线| 国产亚洲精品一区二区| 国产原创在线观看| 国内偷自视频区视频综合| 成人小电影网站| 91精品国产自产在线| 97久久精品| 亚洲高清视频一区| 欧美精品啪啪| 亚洲一区二区蜜桃| 蜜桃视频一区| 欧美大片久久久| 99久久精品99国产精品| 精品国产乱码久久久久夜深人妻| 99久久精品一区二区| 国产人妻精品午夜福利免费| 久久久久99精品国产片| 国产97免费视频| 大桥未久av一区二区三区| 怡红院男人天堂| 亚洲精品一区二区三区福利| aⅴ在线视频男人的天堂| 欧美日本高清一区| 91成人在线| 国产一区二区三区免费不卡| 欧美gay男男猛男无套| 久艹视频在线免费观看| 伊人成人在线视频| 精品少妇人欧美激情在线观看| 欧美精品自拍| 婷婷六月天在线| 日本伊人午夜精品| 2018国产精品| 日韩一区在线看| 精品视频一二三区| 精品成人免费观看| 91麻豆一二三四在线| 国产精品电影观看| 国产精品久久久久久久久久白浆| 一区二区在线中文字幕电影视频 | 亚洲一二三四在线| 亚洲综合视频在线播放| 精品一区二区三区三区| 邻居大乳一区二区三区| 久久久久久国产三级电影| 1区2区在线| 999国内精品视频在线| 欧美综合另类| 日韩av播放器| 91蝌蚪国产九色| 国产一级特黄aaa大片| 日韩午夜电影av| 少妇无码一区二区三区| 亚洲人成网站色ww在线| 69久久久久| 国产成人精品av在线| 日韩母乳在线| 亚洲天堂电影网| 久久久夜精品| 欧美性xxxx图片| 国产精品九色蝌蚪自拍| 免费污污视频在线观看| 日韩精品中文字幕久久臀| 久久青草伊人| 久久精品一区二区三区不卡免费视频| 亚洲一本视频| 成年人小视频在线观看| 亚洲自拍另类综合| www.超碰在线.com| 欧美大秀在线观看| 成人在线视频播放| 亚洲一区二区在线| 日韩黄色网络| 欧美色图另类小说| 97久久超碰国产精品| 欧美一二三区视频| 精品夜色国产国偷在线| 欧美精品日日操| 亚洲综合日韩在线| 亚洲破处大片| www.黄色网| 婷婷中文字幕一区三区| 婷婷丁香花五月天| 欧美专区第一页| 欧美军人男男激情gay| 日韩精品免费播放| 国产精品国产三级国产普通话三级 | 精品国产1区二区| 欧美调教sm| 日韩videos| 韩日欧美一区二区三区| 在哪里可以看毛片| 欧美性三三影院| 福利在线视频网站| 国产成人精品亚洲精品| 欧美综合另类| 人妻精品久久久久中文字幕69| 亚洲成人免费在线观看| 国产乱码久久久久| 欧美激情视频在线观看| 欧美电影在线观看免费| 免费久久久久久| 粉嫩av亚洲一区二区图片| 国产精品男女视频| 一本色道久久88综合亚洲精品ⅰ| 久草在线资源福利站| 日本亚洲欧洲精品| 国产一区不卡在线| 日韩中文字幕在线观看视频| 日韩一级裸体免费视频| 国产伦精品一区二区三区免费优势| 国产真实乱子伦| 综合激情成人伊人| 亚洲色欧美另类| 91久久精品国产91久久性色| 亚洲裸体俱乐部裸体舞表演av| 五月天国产视频| 中文字幕一区二区三区四区不卡| 亚洲xxx在线| 国产精品成人v| 国产一区日韩一区| 先锋影音av在线| 欧美sm美女调教| 91成人在线| 内射国产内射夫妻免费频道| 国产精品久久福利| 日本一本草久在线中文| 午夜精品久久久久久久久久久久| jizz18欧美18| 午夜视频你懂的| 狠狠操狠狠色综合网| 人人超在线公开视频| 亚洲成人自拍|