当前位置: 首页 > news >正文

免费做网站电话公司官网制作报价

免费做网站电话,公司官网制作报价,龙华做企业网站,wordpress用户名长度一、 概念介绍 1.1 Langchain 是什么#xff1f; 官方定义是#xff1a;LangChain是一个强大的框架#xff0c;旨在帮助开发人员使用语言模型构建端到端的应用程序#xff0c;它提供了一套工具、组件和接口#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供…一、     概念介绍 1.1 Langchain 是什么 官方定义是LangChain是一个强大的框架旨在帮助开发人员使用语言模型构建端到端的应用程序它提供了一套工具、组件和接口可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain是一个语言模型集成框架其使用案例与语言模型的使用案例大致重叠包括文档分析和摘要、聊天机器人和代码分析。 简单来说LangChain提供了灵活的抽象和AI优先的工具可帮助开发人员将LLM应用程序从原型转化为生产环境。 它还提供了一套工具可帮助开发人员构建上下文感知、推理应用程序 LangChain的工具包括聊天机器人、文档分析、摘要、代码分析、工作流自动化、自定义搜索等。 1.2  如何使用 LangChain 要使用 LangChain开发人员首先要导入必要的组件和工具例如 LLMs chat models agents chains 内存功能。这些组件组合起来创建一个可以理解、处理和响应用户输入的应用程序。 LangChain 为特定用例提供了多种组件例如个人助理、文档问答、聊天机器人、查询表格数据、与 API 交互、提取、评估和汇总。 二、  主要包含组件 Model I/O管理大语言模型Models及其输入Prompts和格式化输出Output ParsersData connection管理主要用于建设私域知识库的向量数据存储Vector Stores、内容数据获取Document Loaders和转化Transformers以及向量数据查询RetrieversMemory用于存储和获取 对话历史记录 的功能模块Chains用于串联 Memory ↔️ Model I/O ↔️ Data Connection以实现 串行化 的连续对话、推测流程Agents基于 Chains 进一步串联工具Tools从而将大语言模型的能力和本地、云服务能力结合Callbacks提供了一个回调系统可连接到 LLM 申请的各个阶段便于进行日志记录、追踪等数据导流 Langchain核心模块架构图 三、核心模块 3.1  Model I/O 模型接入 LLM 的交互组件用于和不同类型模型完成业务交互LangChain 将模型分为 LLMS、Chat Model两种模型方式分别通过不同template操作完成三种模型的业务交互。 3.2  LLMs 是指具备语言理解和生成能力的商用大型语言模型以文本字符串作为输入并返回文本字符串作为输出。LangChain 中设计 LLM 类用于与大语言模型进行接口交互该类旨在为 LLM 提供商提供标准接口如 OpenAI、Cohere、Hugging Face。 以 OpenAI LLM 包装器为例其使用方法如下 from LangChain.llms import OpenAI llm OpenAI(temperature0, model_namegpt-3.5-turbo, openai_api_keyOPENAI_API_KEY) llm(Please introduce yourself) llm.get_num_tokens(question) 3.3    Chat 聊天模型是语言模型的一个变体聊天模型以语言模型为基础其内部使用语言模型不再以文本字符串为输入和输出而是将聊天信息列表为输入和输出他们提供更加结构化的 API。通过聊天模型可以传递一个或多个消息。LangChain 目前支持四类消息类型分别是 AIMessage、HumanMessage、SystemMessage 和 ChatMessage 。 SystemMessage系统消息是用来设定模型的一种工具可以用于指定模型具体所处的环境和背景如角色扮演等 HumanMessage人类消息就是用户信息由人给出的信息如提问使用 Chat Model 模型就得把系统消息和人类消息放在一个列表里然后作为 Chat Model 模型的输入 AIMessage就是 AI 输出的消息可以是针对问题的回答 ChatMessageChat 消息可以接受任意角色的参数 大多数情况下我们只需要处理 HumanMessage、AIMessage 和 SystemMessage 消息类型。此外聊天模型支持多个消息作为输入如下系统消息和用户消息的示例 messages [ SystemMessage(contentYou are a helpful assistant that translates English to French.), HumanMessage(contentI love programming.) ] chat(messages) AIMessage(contentJaime programmer., additional_kwargs{}) 使用generate来生成多组消息 batch_messages [ [ SystemMessage(contentYou are a helpful assistant that translates English to French.), HumanMessage(contentI love programming.) ], [ SystemMessage(contentYou are a helpful assistant that translates English to French.), HumanMessage(contentI love artificial intelligence.) ], ] result chat.generate(batch_messages) 3.4  Prompts 提示Prompt指的是模型的输入这个输入一般很少是硬编码的而是从使用特定的模板组件构建而成的这个模板组件就是 PromptTemplate 提示模板可以提供提示模板作为输入模板指的是我们希望获得答案的具体格式和蓝图。LangChain 提供了预先设计好的提示模板可以用于生成不同类型任务的提示。当预设的模板无法满足要求时也可以使用自定义的提示模板。 在 LangChain 中我们可以根据需要设置提示模板并将其与主链相连接以进行输出预测。此外LangChain 还提供了输出解析器的功能用于进一步精炼结果。输出解析器的作用是指导模型输出的格式化方式以及将输出解析为所需的格式。 LangChain 提供了几个类和函数使构建和处理提示变得容易 3.4.1  PromptTemplate 提示模板 可以生成文本模版通过变量参数的形式拼接成完整的语句 from langchain.llms import OpenAI from langchain import PromptTemplate import os openai_api_key os.environ[OPENAI_API_KEY] # 使用 openAi 模型 llm OpenAI(model_namegpt-3.5-turbo, openai_api_keyopenai_api_key) # 模版格式 template 我像吃{value}。我应该怎么做出来? # 构建模版 prompt PromptTemplate( input_variables[value], templatetemplate, ) # 模版生成内容 final_prompt prompt.format(value红烧肉) print(输入内容:, final_prompt) print(LLM输出:, llm(final_prompt)) 输入内容: 我想吃红烧肉。我应该怎么做出来? LLM输出: 做红烧肉的步骤如下 1.准备材料500克猪五花肉、2颗蒜瓣、1块姜、2勺糖、3勺生抽、1勺老抽、2勺料酒、500毫升水。 2.将五花肉切成2-3厘米见方的块状。 3.将切好的五花肉放入冷水中煮沸焯水去腥捞出备用。 4.热锅冷油加入姜片和蒜瓣煸炒出香味。 5.将焯水后的五花肉加入锅中煎至两面微黄。 6.加入糖小火翻炒至糖溶化并上色。 7.加入生抽和老抽均匀翻炒均匀上色。 8.倒入料酒翻炒均匀。 9.加入煮肉的水水量需稍微淹没五花肉再放入一个小茶包或者香料包提味盖上锅盖大火烧沸。 10.转小火炖煮40-50分钟期间要时常翻煮肉块保持肉块上色均匀。 11.最后收汁汁液收浓后即可关火。 12.盛出红烧肉切片装盘即可享用。 3.4.2  FewShotPromptTemplate 选择器 将提示的示例内容同样拼接到语句中让模型去理解语义含义进而给出结果。 from langchain.prompts.example_selector import SemanticSimilarityExampleSelector from langchain.vectorstores import FAISS from langchain.embeddings import OpenAIEmbeddings from langchain.prompts import FewShotPromptTemplate, PromptTemplate from langchain.llms import OpenAI import os ## prompt 选择器示例 openai_api_key os.environ[OPENAI_API_KEY] llm OpenAI(model_namegpt-3.5-turbo, openai_api_keyopenai_api_key) example_prompt PromptTemplate( input_variables[input, output], template示例输入:{input}, 示例输出:{output}, ) # 这是可供选择的示例列表 examples [ {input: 飞行员, output: 飞机}, {input: 驾驶员, output: 汽车}, {input: 厨师, output: 厨房}, {input: 空姐, output: 飞机}, ] # 根据语义选择与您的输入相似的示例 example_selector SemanticSimilarityExampleSelector.from_examples( examples, # 生成用于测量语义相似性的嵌入的嵌入类。 OpenAIEmbeddings(openai_api_keyopenai_api_key), # 存储词向量 FAISS, # 生成的示例数 k4 ) # 选择器示例 prompt similar_prompt FewShotPromptTemplate( example_selectorexample_selector, example_promptexample_prompt, # 加到提示顶部和底部的提示项 prefix根据下面示例写出输出, suffix输入:{value}输出:, # 输入变量 input_variables[value], ) value 学生 # 模版生成内容 final_prompt similar_prompt.format(valuevalue) print(输入内容:, final_prompt) print(LLM输出:, llm(final_prompt)) 输入内容: 根据下面示例写出输出 示例输入:厨师, 示例输出:厨房 示例输入:驾驶员, 示例输出:汽车 示例输入:飞行员, 示例输出:飞机 示例输入:空姐, 示例输出:飞机 输入:学生输出: LLM输出: 教室 3.4.3        ChatPromptTemplate 聊天提示模版 以聊天消息作为输入生成完整提示模版。 from langchain.schema import HumanMessage from langchain.prompts import PromptTemplate, ChatPromptTemplate, HumanMessagePromptTemplate # 我们将使用聊天模型,默认为 gpt-3.5-turbo from langchain.chat_models import ChatOpenAI # 解析输出并取回结构化数据 from langchain.output_parsers import StructuredOutputParser, ResponseSchema import os openai_api_key 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 chat_model ChatOpenAI(temperature0, model_namegpt-3.5-turbo, openai_api_keyopenai_api_key) prompt ChatPromptTemplate( messages[ HumanMessagePromptTemplate.from_template(根据用户内容,提取出公司名称和地域名, 用用户内容: {user_prompt}) ], input_variables[user_prompt] ) user_prompt 水滴公司总部在北京吗 fruit_query prompt.format_prompt(user_promptuser_prompt) print(输入内容, fruit_query.messages[0].content) fruit_output chat_model(fruit_query.to_messages()) print(LLM 输出, fruit_output) 输入内容 根据用户内容,提取出公司名称和地域名, 用用户内容: 水滴公司总部在北京吗 LLM 输出 content公司名称: 水滴公司\n地域名: 北京 additional_kwargs{} exampleFalse 3.4.4  StructuredOutputParser 输出解析器 输出解析器是指对模型生成的结果进行解析和处理的组件。它的主要功能是将模型生成的文本进行解析提取有用的信息并进行后续处理。如对模型生成的文本进行解析、提取有用信息、识别实体、分类和过滤结果以及对生成文本进行后处理从而使生成结果更易于理解和使用。它在与大型语言模型交互时起到解析和处理结果的作用增强了模型的应用和可用性。 语言模型输出文本。但是很多时候可能想要获得比文本更结构化的信息。这就是输出解析器的作用。即输出解析器是帮助结构化语言模型响应的类LangChain 中主要提供的类是 PydanticOutputParser。 3.5    Data connection 打通外部数据的管道包含文档加载文档转换文本嵌入向量存储几个环节此模块包含用于处理文档的实用工具函数、不同类型的索引以及可以在链中使用这些索引 LangChain 可以将外部数据和 LLM 进行结合来理解和生成自然语言其中外部数据可以是本地文档、数据库等资源将这些数据进行分片向量化存储于向量存储数据库中再通过用户的 Prompt 检索向量数据库中的相似信息传递给大语言模型进行生成和执行 Action。 3.5.1  Document loaders 文档加载器 重点包括了 txtTextLoader、csvCSVLoaderhtmlUnstructuredHTMLLoaderjsonJSONLoadermarkdownUnstructuredMarkdownLoader以及 pdf因为 pdf 的格式比较复杂提供了 PyPDFLoader、MathpixPDFLoader、UnstructuredPDFLoaderPyMuPDF 等多种形式的加载引擎几种常用格式的内容解析。 3.5.2  Document transformers 文档转换器 LangChain 有许多内置的文档转换器可以轻松地拆分、组合、过滤和以其他方式操作文档重点关注按照字符递归拆分的方式 RecursiveCharacterTextSplitter 。 3.5.3 Text embedding models 文本嵌入 LangChain 中的 Embeddings 基类公开了两种方法一种用于嵌入文档另一种用于嵌入查询。前者采用多个文本作为输入而后者采用单个文本。将它们作为两种单独方法的原因是某些嵌入提供程序对文档要搜索的与查询搜索查询本身有不同的嵌入方法。 文本嵌入模型 text-embedding-model 是将文本进行向量表示从而可以在向量空间中对文本进行诸如语义搜索之类的操作即在向量空间中寻找最相似的文本片段。而这些在 LangChain 中是通过 Embedding 类来实现的。 Embedding 类是一个用于与文本嵌入进行交互的类。这个类旨在为提供商有许多嵌入提供商如 OpenAI、Cohere、Hugging Face 等提供一个标准接口 from langchain.schema import HumanMessage from langchain.prompts import PromptTemplate, ChatPromptTemplate, HumanMessagePromptTemplate # 我们将使用聊天模型,默认为 gpt-3.5-turbo from langchain.chat_models import ChatOpenAI # 解析输出并取回结构化数据 from langchain.output_parsers import StructuredOutputParser, ResponseSchema import os openai_api_key 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 chat_model ChatOpenAI(temperature0, model_namegpt-3.5-turbo, openai_api_keyopenai_api_key) prompt ChatPromptTemplate( messages[ HumanMessagePromptTemplate.from_template(根据用户内容,提取出公司名称和地域名, 用用户内容: {user_prompt}) ], input_variables[user_prompt] ) user_prompt 水滴公司总部在北京吗 fruit_query prompt.format_prompt(user_promptuser_prompt) print(输入内容, fruit_query.messages[0].content) fruit_output chat_model(fruit_query.to_messages()) print(LLM 输出, fruit_output) 3.5.4 VectorStores 向量存储 存储和搜索非结构化数据的最常见方法之一是嵌入它并存储生成的嵌入向量然后在查询时嵌入非结构化查询并检索与嵌入查询“最相似”的嵌入向量。 矢量存储负责存储嵌入数据并为您执行矢量搜索。。处理向量存储的关键部分是创建要放入其中的向量这通常是通过 embedding 来创建的。这个就是对常用矢量数据库Chroma、FAISSMilvusPineconePGVector 等封装接口的说明大概流程初始化数据库连接信息——建立索引——存储矢量——相似性查询下面以 Chroma 为例 # 加载文件 loader TextLoader(filePath) documents loader.load() # 切块数据 text_splitter CharacterTextSplitter( chunk_sizechunkSize, chunk_overlap0, length_functionlen, separatorseparator) split_docs text_splitter.split_documents(documents) # 初始请求向量化数据 embeddings OpenAIEmbeddings(openai_api_keyOPENAI_API_KEY) # 持久化文件地址 persist_directory /data/ collectName # 执行向量化 vectorstore Chroma.from_documents( split_docs, embeddings, persist_directorypersist_directory) # 持久化到本地 vectorstore.persist() 3.5.5 Retrievers 查询 检索器是一个接口它根据非结构化查询返回文档。它比矢量存储更通用。检索器不需要能够存储文档只需返回或检索它。矢量存储可以用作检索器的骨干但也有其他类型的检索器。 检索器接口是一种通用接口使文档和语言模型易于组合。LangChain 中公开了一个 get_relevant_documents 方法该方法接受查询字符串并返回文档列表。 重点关注数据压缩目的是获得相关性最高的文本带入 prompt 上下文这样既可以减少 token 消耗也可以保证 LLM 的输出质量。 from langchain.llms import OpenAI from langchain.retrievers import ContextualCompressionRetriever from langchain.retrievers.document_compressors import LLMChainExtractor from langchain.document_loaders import TextLoader from langchain.vectorstores import FAISS documents TextLoader(../../../state_of_the_union.txt).load() text_splitter CharacterTextSplitter(chunk_size1000, chunk_overlap0) texts text_splitter.split_documents(documents) retriever FAISS.from_documents(texts, OpenAIEmbeddings()).as_retriever() docs retriever.get_relevant_documents(What did the president say about Ketanji Brown Jackson) # 基础检索会返回一个或两个相关的文档和一些不相关的文档即使是相关的文档也有很多不相关的信息 pretty_print_docs(docs) llm OpenAI(temperature0) compressor LLMChainExtractor.from_llm(llm) # 迭代处理最初返回的文档并从每个文档中只提取与查询相关的内容 compression_retriever ContextualCompressionRetriever(base_compressorcompressor, base_retrieverretriever) compressed_docs compression_retriever.get_relevant_documents(What did the president say about Ketanji Jackson Brown) pretty_print_docs(compressed_docs) 3.5.6  Caching Embeddings 缓存嵌入 嵌入可以被存储或临时缓存以避免需要重新计算它们。缓存嵌入可以使用CacheBackedEmbeddings。 3.5.7 Memory Memory 是在用户与语言模型的交互过程中始终保持状态的概念。体现在用户与语言模型的交互聊天消息过程这就涉及为从一系列聊天消息中摄取、捕获、转换和提取知识。Memory 在 Chains/Agents 调用之间维持状态默认情况下Chains 和 Agents 是无状态的这意味着它们独立地处理每个传入的查询但在某些应用程序中如聊天机器人记住以前的交互非常重要无论是在短期的还是长期的。“Memory”这个概念就是为了实现这一点。 LangChain 提供了两种方式使用记忆存储 Memory 组件一种是提供了管理和操作以前的聊天消息的辅助工具来从消息序列中提取信息另一种是在 Chains 中进行关联使用。Memory 可以返回多条信息如最近的 N 条消息或所有以前消息的摘要等。返回的信息可以是字符串也可以是消息列表。 LangChain 提供了从聊天记录、缓冲记忆、Chains 中提取记忆信息的方法类以及接口如 ChatMessageHistory 类一个超轻量级的包装器提供了一些方便的方法来保存人类消息、AI 消息然后从中获取它们再如 ConversationBufferMemory 类它是 ChatMessageHistory 的一个包装器用于提取变量中的消息等等。 from langchain.memory import ChatMessageHistory from langchain.chat_models import ChatOpenAI import os openai_api_keyos.environ[OPENAI_API_KEY] chat ChatOpenAI(temperature0, openai_api_keyopenai_api_key) # 声明历史 history ChatMessageHistory() history.add_user_message(你是一个很好的 AI 机器人,可以帮助用户在一个简短的句子中找出去哪里旅行) history.add_user_message(我喜欢海滩,我应该去哪里?) # 添加AI语言 history.add_ai_message(你应该去广东深圳) # 添加人类语言 history.add_user_message(当我在那里时我还应该做什么?) print(history信息, history.messages) # 调用模型 ai_response chat(history.messages) print(结果, ai_response) # 继续添加 AI 语言 history.add_ai_message(ai_response.content) print(history信息, history.messages) # 继续添加人类语言 history.add_user_message(推荐下美食和购物场所) ai_response chat(history.messages) print(结果, ai_response) 3.5.8  Chains 通常我们使用单独的 LLM 也可以解决问题但是对于更加复杂的应用程序需要在 LLM 之间或与其他系统进行链接来完成任务这个通常称为链接 LLM。 链允许将模型或系统间的多个组件组合起来创建一个单一的、一致的应用程序。举例来说我们创建一个链该链接受用户的输入通过 PromptTemplate 模板对输入进行格式化并传递到 LLM 语言模型。还可以将多个链组合起来或者将链与其他系统组件组合起来来构建更复杂的链实现更强大的功能。LangChain 为链提供了标准接口以及常见实现与其他工具进行了大量集成并为常见应用程序提供了端到端链。 基础顺序链 from langchain.llms import OpenAI from langchain.chains import LLMChain from langchain.prompts import PromptTemplate from langchain.chains import SimpleSequentialChain import os openai_api_key os.environ[OPENAI_API_KEY] llm OpenAI(temperature1, openai_api_keyopenai_api_key) # 第一个链模版内容 template1 根据用户的输入的描述推荐一个适合的地区用户输入: {value} prompt_template1 PromptTemplate(input_variables[value], templatetemplate1) # 构建第一个链 chain1 LLMChain(llmllm, promptprompt_template1) # 第二个链模版内容 template2 根据用户的输入的地区推荐该地区的美食用户输入: {value} prompt_template2 PromptTemplate(input_variables[value], templatetemplate2) # 构建第二个链 chain2 LLMChain(llmllm, promptprompt_template2) # 将链组装起来 overall_chain SimpleSequentialChain(chains[chain1, chain2], verboseTrue) # 运行链 review overall_chain.run(我想在中国看大海) print(结果, review) from LangChain.prompts import PromptTemplate from LangChain.llms import OpenAI from LangChain.chains import LLMChain llm OpenAI(temperature0.9) prompt PromptTemplate( input_variables[product], template Please help me to find a new name for my company that makes {product}?, ) chain LLMChain(llmllm, promptprompt) print(chain.run(super phone)) 上例中接受用户输入通过模板格式化输入后传递到语言模型就可以通过一个简单的链类来实现如在 LangChain 中的 LLMChain 类。它是一个简单的链可接受一个提示模板使用用户输入对其进行格式化并从 LLM 返回响应。当然 LLMChain 也可以用于聊天模型。 3.5.9  Agents 通常用户的一个问题可能需要应用程序的多个逻辑处理才能完成相关任务而且往往可能是动态的会随着用户的输入不同而需要不同的 Action或者 LLM 输出的不同而执行不同的 Action。因此应用程序不仅需要预先确定 LLM 以及其他工具调用链而且可能还需要根据用户输入的不同而产生不同的链条。使用代理可以让 LLM 访问工具变的更加直接和高效工具提供了无限的可能性LLM 可以搜索网络、进行数学计算、运行代码等等相关功能。 LangChain 中代理使用 LLM 来确定采取哪些行动及顺序查看观察结果并重复直到完成任务。LangChain 库提供了大量预置的工具也允许修改现有工具 或创建新工具。当代理被正确使用时它们可以非常强大。在 LangChain 中通过“代理人”的概念在这些类型链条中访问一系列的工具完成任务。根据用户的输入代理人可以决定是否调用其中任何一个工具。如下是一段简单的示例 #加载要使用的语言模型来控制代理人 llm OpenAI(temperature0) #加载一些需要使用的工具如serpapi和llm-mathllm-math工具需要使用LLM tools load_tools([serpapi, llm-math], llmllm) #使用工具、语言模型和代理人类型初始化一个代理人。 agent initialize_agent(tools, llm, agentAgentType.ZERO_SHOT_REACT_DESCRIPTION, verboseTrue) #控制代理执行 agent.run(Who is Vin Diesels girlfriend? What is her current age raised to the 0.5 power?) 3.5.10 Callbacks LangChain 提供了一个回调系统允许您连接到 LLM 申请的各个阶段。这对于日志记录、监控、流传输和其他任务非常有用。 可以使用整个 API 中可用的参数来订阅这些事件。该参数是处理程序对象的列表这些对象预计将实现下面更详细描述的一个或多个方法。 未完待续。。。
文章转载自:
http://www.morning.bpmnl.cn.gov.cn.bpmnl.cn
http://www.morning.fhrt.cn.gov.cn.fhrt.cn
http://www.morning.ctfwl.cn.gov.cn.ctfwl.cn
http://www.morning.hrjrt.cn.gov.cn.hrjrt.cn
http://www.morning.zqcsj.cn.gov.cn.zqcsj.cn
http://www.morning.lbfgq.cn.gov.cn.lbfgq.cn
http://www.morning.tnktt.cn.gov.cn.tnktt.cn
http://www.morning.nspbj.cn.gov.cn.nspbj.cn
http://www.morning.mlwpr.cn.gov.cn.mlwpr.cn
http://www.morning.tbstj.cn.gov.cn.tbstj.cn
http://www.morning.wmmjw.cn.gov.cn.wmmjw.cn
http://www.morning.lanyee.com.cn.gov.cn.lanyee.com.cn
http://www.morning.zljqb.cn.gov.cn.zljqb.cn
http://www.morning.pyzt.cn.gov.cn.pyzt.cn
http://www.morning.dkslm.cn.gov.cn.dkslm.cn
http://www.morning.qmqgx.cn.gov.cn.qmqgx.cn
http://www.morning.lyhrg.cn.gov.cn.lyhrg.cn
http://www.morning.rxfgh.cn.gov.cn.rxfgh.cn
http://www.morning.thlr.cn.gov.cn.thlr.cn
http://www.morning.khtyz.cn.gov.cn.khtyz.cn
http://www.morning.hsrch.cn.gov.cn.hsrch.cn
http://www.morning.mqxrx.cn.gov.cn.mqxrx.cn
http://www.morning.bsqth.cn.gov.cn.bsqth.cn
http://www.morning.fqqlq.cn.gov.cn.fqqlq.cn
http://www.morning.dnhdp.cn.gov.cn.dnhdp.cn
http://www.morning.wmdbn.cn.gov.cn.wmdbn.cn
http://www.morning.rxzcl.cn.gov.cn.rxzcl.cn
http://www.morning.wclxm.cn.gov.cn.wclxm.cn
http://www.morning.zmwd.cn.gov.cn.zmwd.cn
http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn
http://www.morning.fjkkx.cn.gov.cn.fjkkx.cn
http://www.morning.dpdns.cn.gov.cn.dpdns.cn
http://www.morning.kstlm.cn.gov.cn.kstlm.cn
http://www.morning.qklff.cn.gov.cn.qklff.cn
http://www.morning.ebpz.cn.gov.cn.ebpz.cn
http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn
http://www.morning.rcbdn.cn.gov.cn.rcbdn.cn
http://www.morning.sjpbh.cn.gov.cn.sjpbh.cn
http://www.morning.brmbm.cn.gov.cn.brmbm.cn
http://www.morning.mygbt.cn.gov.cn.mygbt.cn
http://www.morning.yydeq.cn.gov.cn.yydeq.cn
http://www.morning.tsqpd.cn.gov.cn.tsqpd.cn
http://www.morning.xzjsb.cn.gov.cn.xzjsb.cn
http://www.morning.gnghp.cn.gov.cn.gnghp.cn
http://www.morning.xfwnk.cn.gov.cn.xfwnk.cn
http://www.morning.xptkl.cn.gov.cn.xptkl.cn
http://www.morning.sh-wj.com.cn.gov.cn.sh-wj.com.cn
http://www.morning.dwwbt.cn.gov.cn.dwwbt.cn
http://www.morning.xnyfn.cn.gov.cn.xnyfn.cn
http://www.morning.rbnj.cn.gov.cn.rbnj.cn
http://www.morning.lizimc.com.gov.cn.lizimc.com
http://www.morning.mytmx.cn.gov.cn.mytmx.cn
http://www.morning.jwbnm.cn.gov.cn.jwbnm.cn
http://www.morning.hpggl.cn.gov.cn.hpggl.cn
http://www.morning.tbwsl.cn.gov.cn.tbwsl.cn
http://www.morning.rfwgg.cn.gov.cn.rfwgg.cn
http://www.morning.wxccm.cn.gov.cn.wxccm.cn
http://www.morning.pdmml.cn.gov.cn.pdmml.cn
http://www.morning.rkmsm.cn.gov.cn.rkmsm.cn
http://www.morning.trnhy.cn.gov.cn.trnhy.cn
http://www.morning.msbmp.cn.gov.cn.msbmp.cn
http://www.morning.zlwg.cn.gov.cn.zlwg.cn
http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn
http://www.morning.ptqpd.cn.gov.cn.ptqpd.cn
http://www.morning.lfqnk.cn.gov.cn.lfqnk.cn
http://www.morning.ckrnq.cn.gov.cn.ckrnq.cn
http://www.morning.nyqzz.cn.gov.cn.nyqzz.cn
http://www.morning.xykst.cn.gov.cn.xykst.cn
http://www.morning.nmlpp.cn.gov.cn.nmlpp.cn
http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn
http://www.morning.rtqyy.cn.gov.cn.rtqyy.cn
http://www.morning.lfbsd.cn.gov.cn.lfbsd.cn
http://www.morning.wklmj.cn.gov.cn.wklmj.cn
http://www.morning.qjmnl.cn.gov.cn.qjmnl.cn
http://www.morning.ynbyk.cn.gov.cn.ynbyk.cn
http://www.morning.qxlxs.cn.gov.cn.qxlxs.cn
http://www.morning.wtdyq.cn.gov.cn.wtdyq.cn
http://www.morning.ktmbp.cn.gov.cn.ktmbp.cn
http://www.morning.dtnjr.cn.gov.cn.dtnjr.cn
http://www.morning.gwjsm.cn.gov.cn.gwjsm.cn
http://www.tj-hxxt.cn/news/280324.html

相关文章:

  • 重庆网站推广外包企业网站后台管理系统密码
  • wordpress添加样式表sem优化软件选哪家
  • 网站网站做代理做微信广告网站有哪些
  • 宣传中心网站建设网上书城 网站建设策划书
  • 网站开发知识视频开公司的流程
  • 织梦医疗网站源码手机版素材网站
  • 网站制作售后重庆网站建设业务招聘
  • 有经验的中山网站建设四川建设行业网站有哪些
  • 聚成网站建设营销型网站建设推荐乐云seo
  • 成品网站哪个好模板网站建设多少钱
  • 网站建设外包还是自己做主要的网站开发技术路线
  • 财务公司网站模板下载销售型网站设计
  • dw做网站链接xshuan主题wordpress
  • 做企业网站收费多少惠州惠城区建设网站
  • 论坛类网站如何备案做网站开发的方案
  • 上海网站建设的网辽宁建设工程信息网官网 项目经理解锁表格
  • 网站建立吸引人的策划活动江西响应式网站建设哪家好
  • 做网站怎么改关键词wordpress生成多个尺寸图片
  • 温州建设小学网站首页网站服务器宽带
  • 网站运营核心莱芜租房
  • 深圳市住房建设局网站产品品牌推广公司
  • 网站开发业务规划大庆互联网公司
  • 南充网站建设费用qq小程序官网
  • 一学一做专题网站网站被k了
  • 专题探索网站开发教学模式的结构企业门户网站需求分析
  • vps 网站攻击ip地址公司营销网站制作
  • 湖南网站制作哪家好计算机前端好找工作吗
  • 打开网站显示在建设中建站教学
  • 最火的做牛排沙拉网站郑州建设网站报价
  • 建设网站为什么要虚拟主机网站需求清单