Maison > Article > Périphériques technologiques > Les programmeurs Java apprennent LangChain à partir de zéro : modéliser les composants
L'article précédent vous a présenté quelques connaissances de base sur LangChain. Les amis qui ne l'ont pas vu peuvent cliquer ici pour y jeter un œil. Aujourd'hui, nous allons vous présenter le premier modèle de composant très important de LangChain, Model.
Notez que le modèle mentionné ici fait référence au composant de modèle de LangChain, et non au modèle de langage similaire à OpenAI. La raison pour laquelle LangChain a des composants de modèle est qu'il existe trop de modèles de langage dans l'industrie, à l'exception du modèle de langage du. société OpenAI En outre, il existe de nombreux autres endroits.
LangChain comporte trois types de composants de modèle, à savoir le modèle de grand langage LLM, le modèle de chat et les modèles d'intégration de texte.
LLM est le composant de modèle le plus basique. L'entrée et la sortie ne prennent en charge que les chaînes, ce qui peut répondre à nos besoins dans la plupart des scénarios. Nous pouvons écrire du code Python directement sur Colab([https://colab.research.google.com)
Ce qui suit est un cas, installez d'abord les dépendances, puis exécutez le code suivant.
pip install openaipip install langchain
import os# 配置OpenAI 的 API KEYos.environ["OPENAI_API_KEY"] ="sk-xxx"# 从 LangChain 中导入 OpenAI 的模型from langchain.llms import OpenAI# 三个参数分别代表OpenAI 的模型名称,执行的次数和随机性,数值越大越发散llm = OpenAI(model_name="text-davinci-003", n=2, temperature=0.3)llm.generate(["给我讲一个故事", "给我讲一个笑话"])
Les résultats de l'opération sont les suivants
Le modèle de chat est basé sur le modèle LLM, mais le modèle de chat est plus structuré que l'entrée et la sortie entre le modèle LLM composants, et les paramètres d'entrée et de sortie sont. Les types sont tous des modèles de discussion, pas de simples chaînes. Les types de modèles de chat couramment utilisés incluent les
from langchain.chat_models import ChatOpenAIfrom langchain.schema import (AIMessage,HumanMessage,SystemMessage)chat = ChatOpenAI(temperature=0)messages = [SystemMessage(cnotallow="返回的数据markdown 语法进行展示,代码使用代码块包裹"),HumanMessage(cnotallow="用 Java 实现一个二分查找算法")]print(chat(messages))
La forme de chaîne de contenu générée est la suivante
L'algorithme de recherche binaire est un algorithme de recherche utilisé pour trouver des éléments spécifiques dans un tableau ordonné, également connu sous le nom d'algorithme de recherche binaire. La complexité temporelle de cet algorithme est O(log n). nnCe qui suit est le code pour implémenter l'algorithme de recherche binaire en Java : nnjavanpublic class BinarySearch {n public static int binaireSearch(int[] arr, int target) {n int left = 0;n int right = arr.length - 1;n while (gauche <= droite) {n int mid = (gauche + droite) / 2;n if (arr[mid] == cible) {n return mid;n } else if (arr[mid] < target) {n gauche = milieu + 1;n } else {n droite = milieu - 1;n }n }n return -1;n }nn public static void main(String[] args) {n int[] arr = {1 , 3, 5, 7, 9};n int target = 5;n int index = binaireSearch(arr, target);n if (index != -1) {n System.out.println("élément cible" + cible + " in L'indice dans le tableau est " + index); n } else {n System.out.println("l'élément cible" + la cible + " n'est pas dans le tableau"); ci-dessus, la méthode binaireSearch Reçoit un tableau trié et un élément cible, renvoie l'indice de l'élément cible dans le tableau, ou -1 si l'élément cible n'est pas dans le tableau. nnDans la méthode binaireSearch, utilisez deux pointeurs gauche et droit pour pointer respectivement vers les extrémités gauche et droite du tableau, puis réduisez continuellement la plage de recherche dans une boucle while jusqu'à ce que l'élément cible soit trouvé ou que la plage de recherche soit vide. Dans chaque boucle, la position médiane est calculée, puis l'élément cible est comparé à l'élément en position médiane. S'ils sont égaux, l'indice de la position médiane est renvoyé si l'élément cible est plus grand que l'élément en position médiane. la position médiane, le pointeur gauche est déplacé vers la droite de la position médiane ; si l'élément cible est plus petit que l'élément de la position médiane, déplacez le pointeur droit vers la gauche de la position médiane. ' additionnel_kwargs={} example=False
Extraire le contenu dans content et affichez-le en utilisant une syntaxe markdown comme celle-ci
En utilisant ce composant de modèle, vous pouvez prédéfinir certains rôles, puis les personnaliser.
from langchain.chat_models import ChatOpenAIfrom langchain.prompts import (ChatPromptTemplate,PromptTemplate,SystemMessagePromptTemplate,AIMessagePromptTemplate,HumanMessagePromptTemplate,)from langchain.schema import (AIMessage,HumanMessage,SystemMessage)system_template="你是一个把{input_language}翻译成{output_language}的助手"system_message_prompt = SystemMessagePromptTemplate.from_template(system_template)human_template="{text}"human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])messages = chat_prompt.format_prompt(input_language="英语", output_language="汉语", text="I love programming.")print(messages)chat = ChatOpenAI(temperature=0)print(chat(messages.to_messages()))
output
messages=[SystemMessage(cnotallow='Vous êtes un assistant qui traduit l'anglais vers le chinois', additionnel_kwargs={}), HumanMessage(cnotallow='J'adore programmer.',additional_kwargs = {}, example=False)] cnotallow='J'aime programmer. exemple=Faux, additionnel_kwargugs={}
文本嵌入模型组件相对比较难理解,这个组件接收的是一个字符串,返回的是一个浮点数的列表。在 NLP 领域中 Embedding 是一个很常用的技术,Embedding 是将高维特征压缩成低维特征的一种方法,常用于自然语言处理任务中,如文本分类、机器翻译、推荐系统等。它将文本中的离散数据如单词、短语、句子等,映射为实数向量,以更好地进行神经网络处理和学习。通过 Embedding,文本数据可以被更好地表示和理解,提高了模型的表现力和泛化能力。
from langchain.embeddings import OpenAIEmbeddingsembeddings = OpenAIEmbeddings()text = "hello world"query_result = embeddings.embed_query(text)doc_result = embeddings.embed_documents([text])print(query_result)print(doc_result)
output
[-0.01491016335785389, 0.0013780705630779266, -0.018519161269068718, -0.031111136078834534, -0.02430146001279354, 0.007488010451197624,0.011340680532157421, 此处省略 .......
今天给大家介绍了一下 LangChain 的模型组件,有了模型组件我们就可以更加方便的跟各种 LLMs 进行交互了。
官方文档:https://python.langchain.com/en/latest/modules/models.html
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!