Maison >Périphériques technologiques >IA >Partage ChatGPT - Comment développer une application LLM
ChatGPT a provoqué un énorme choc dans l'industrie, et tous les horizons discutent des grands modèles de langage et de l'intelligence artificielle en général. L’IA a connu plus de cinquante ans de développement et se trouve aujourd’hui dans une période critique de développement horizontal de la structure industrielle. Ce changement découle du changement de paradigme dans le domaine de la PNL, qui a évolué de « pré-entraînement + réglage fin » à « pré-entraînement, incitation et prédiction ». Dans ce nouveau modèle, les tâches en aval s'adaptent au modèle pré-entraîné, ce qui en fait un grand modèle adapté à plusieurs tâches. Ce changement a jeté les bases de la division horizontale du travail dans l'industrie de l'IA. De grands modèles de langage sont devenus des infrastructures. Des sociétés d'ingénierie rapide ont émergé les unes après les autres, se concentrant sur la connexion des utilisateurs et des modèles. La division du travail dans l'industrie de l'IA a initialement pris forme, comprenant l'infrastructure sous-jacente (fournisseurs de services cloud), les grands modèles, les plates-formes Prompt Engineering et les applications de terminaux. À mesure que l'industrie de l'IA évolue, les développeurs peuvent tirer pleinement parti des grands modèles de langage (LLM) et de Prompt Engineering pour développer des applications innovantes.
Actuellement, nous devons développer une application basée sur LLM. Quel est le plus gros problème d'ingénierie auquel nous sommes confrontés ?
Prenons Langchain comme exemple pour le dire simplement : LangChain est une encapsulation des capacités sous-jacentes de LLM et est une sorte de Prompt Engineering ou Prompt-Ops.
Ceci est un exemple de comparaison de démonstration utilisant ChatGPT et LangChain L'entrée est "Qui est la femme de Jay Chou Quoi ?" son âge actuel est-il multiplié par 0,23 ? » On peut voir que les résultats de réponse de ChatGPT ou GPT-3.5 sont faux car ils n'ont pas de capacités de recherche. L'API utilisant LangChain combinée avec GPT-3.5 d'OpenAI à droite génère le résultat correct. Elle recherchera progressivement les informations correctes et obtiendra le résultat correct, et le processus intermédiaire est automatiquement géré par le framework. Je n'ai aucune autre opération que la saisie. questions.
C'est un exemple très choquant. Dans ce processus, il trouve par lui-même les erreurs de fonction non définies et les corrige par lui-même. 2.2.3 Interrogation des données NBA à l'aide de GPT-3 + Statmuse + Langchain Combinés, posez des questions de données complexes et obtenez des réponses précises. Par exemple : « Quelle est la moyenne des points défensifs des Boston Celtics par match au cours de cette saison NBA 2022-2023 ? Comment le pourcentage de variation se compare-t-il à leur moyenne la saison dernière ? »
2.2.4 Connect Python REPL ouvre le navigateur ? » pour jouer de la musique
Une jolie scène de science-fiction. J'ai utilisé Langchain pour me connecter à l'outil Python REPL et j'ai entré "joue-moi une chanson". Il a importé le package webBrowser et a appelé le code pour ouvrir le navigateur et le lire pour moi. Chanson "Je ne t'abandonnerai jamais"
def pythonTool(): bash = BashProcess() python_repl_util = Tool( "Python REPL", PythonREPL().run, """A Python shell. Use this to execute python commands. Input should be a valid python command. If you expect output it should be printed out.""", ) command_tool = Tool( name="bash", descriptinotallow="""A Bash shell. Use this to execute Bash commands. Input should be a valid Bash command. If you expect output it should be printed out.""", func=bash.run, ) # math_tool = _get_llm_math(llm) # search_tool = _get_serpapi() tools = [python_repl_util, command_tool] agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True) agent.run("给我播放一首音乐")
连接私有数据对第三方企业做LLM应用来说非常重要。下面举几个例子
法律公文和政策条款一般都非常复杂繁琐,这个demo中将旧金山政府的信息用Langchain与GPT结合,做到询问其中细节能获得准确回复的效果。
> Entering new AgentExecutor chain... I need to find out the size limit for a storage shed without a permit and then search for sheds that are smaller than that size. Action: SF Building Codes QA System Action Input: "What is the size limit for a storage shed without a permit in San Francisco?" Observation: The size limit for a storage shed without a permit in San Francisco is 100 square feet (9.29 m2). Thought:Now that I know the size limit, I can search for sheds that are smaller than 100 square feet. Action: Google Action Input: "Storage sheds smaller than 100 square feet" Observation: Results 1 - 24 of 279 ... Thought:I need to filter the Google search results to only show sheds that are smaller than 100 square feet and suitable for backyard storage. Action: Google Action Input: "Backyard storage sheds smaller than 100 square feet" Thought:I have found several options for backyard storage sheds that are smaller than 100 square feet and do not require a permit. Final Answer: The size limit for a storage shed without a permit in San Francisco is 100 square feet. There are many options for backyard storage sheds that are smaller than 100 square feet and do not require a permit, including small sheds under 36 square feet and medium sheds between 37 and 100 square feet.
LLM应用与私有数据交互非常重要,我看到无数人在问一些ChatGPT无法回答的问题了:问认不认识谁、问自己公司业务细节、问各种可能不包含在预训练数据集里的东西。这些都已用Langchain和LlaMaIndex来解决。试想一下,将私有数据与LLM相结合,将改变数据原有的访问方式,通过问答能很自然地获取到自己需要的信息,这是比当前的搜索/打标分类都要高效的数据交互方式。
向量数据库现在看起来是构建LLM App中很关键的一个组件。首先 LLM 的预训练和微调过程不可能包含我们所期待的私有数据,因此如何将LLM关联到私有数据成为一个很关键的需求。而且LLM的“接口”-自然语言通常不是像Key-Value的映射那样精确地。而且在这一阶段我们希望LLM去理解我们的知识库,而不是简单的在其中搜索相同的字符串,我们希望询问关于我们知识库的细节,并给出一定理解后的答案(以及来源),这样匹配向量这样的搜索方式是一个非常合适且关键的解决方案。还有一个关键点是,LLM在每次调用是按token计费(即文本量),并且目前的接口的上下文有着4096 tokens的限制。,因此面对庞大的数据,我们也不可能将所有的数据一次性传给LLM。因此才有了第一张图那个流程图的结构。本地预先将我们私有的数据转成向量存在Qdrant里,用户问答时,将用户的问题转为向量,然后去Qdrant里进行搜索(相似性匹配)得到Top K个结果,然后将这些结果(注意这里的结果已经是自然语言了)传给LLM进行总结输出。
这里使用Langchain社区博客的流程图为例
私有数据分割成小于LLM上下文的分块,创建向量后存入向量数据库
将问题计算向量后在向量数据库进行相似性搜索,算出相关性较高的top k个结果后拼接prompt送往LLM获得答案。
Parlons des dernières nouvelles concernant le déploiement privé d'OpenAI. Si Langchain est utilisé pour la liaison, face à d'énormes données privées, un modèle d'intégration (ada d'OpenAI) est utilisé pour. calcul La saisie du vecteur problème, l'utilisation de bases de données vectorielles telles que Qdrant pour gérer les vecteurs et les recherches vectorielles de données privées, et l'utilisation de Langchain comme lien intermédiaire peuvent résoudre le problème, mais la consommation de jetons est un problème de coût qui ne peut être ignoré. Un déploiement privé + un réglage fin peuvent résoudre la plupart des problèmes mentionnés précédemment. Peut-être que les grandes et riches entreprises utilisent l'instance de modèle et le réglage fin, tandis que les développeurs indépendants des petites entreprises utilisent des frameworks tels que Langchain. À l'avenir, lorsque les capacités du service LLM d'OpenAI déborderont, Prompt pourrait ne plus être nécessaire et les fonctions de Langchain pourraient même être incluses. Le développement et l'accès aux applications LLM pourraient ne nécessiter qu'un appel d'interface.
2.4 Pile technologique d'application LLM 2023
2023 La dernière pile technologique utilisée pour créer facilement une démo d'IA :
Certaines de ces invites à propos de Langchain - Opposition aux outils comme Ops : stream.thesephist.com Le principal problème est que dans de tels outils/frameworks, il est un peu fou d'utiliser le langage naturel comme connexion entre le code et le LLM, et d'utiliser le langage non déterministe lui-même comme flux de contrôle. De plus, l’évaluation de l’effet de sortie du modèle lui-même est désormais une tâche très difficile. Il n’existe pas de bonne solution. Beaucoup d’entre eux disposent d’une énorme feuille de calcul et s’appuient sur des humains pour l’évaluer. (Il est également prévu d'utiliser LLM pour évaluer LLM, ce qui est encore relativement précoce.) Donc, avant de pouvoir le mettre en production, il y aura peut-être encore beaucoup de travail à faire pour réellement faire face aux utilisateurs plutôt que comme une démonstration sur Twitter.
Parlons en détail des énormes défis rencontrés lors de la phase de test. Si votre produit dispose d'un ensemble d'invites qui fonctionnent bien pendant la phase de développement, une fois qu'il a été soumis aux tests, vous pourrez peut-être identifier les problèmes en en testant des centaines, voire des milliers. Étant donné que l'effet ne peut pas être garanti, il sera confronté à de grands défis pour le lancer réellement auprès des utilisateurs finaux. Et si vous n'utilisez pas de services de réglage fin ou d'instances de modèle, si OpenAI met à jour le modèle, toutes les invites de votre environnement de production devront peut-être être retestées pour les effets. Vos invites doivent également être gérées par version, tout comme le code. Qu'il y ait ou non des modifications d'invite, chaque version doit être testée par régression avant d'être mise en ligne. Sans une bonne solution d’évaluation automatisée, un grand nombre de cas devraient être testés manuellement, ce qui consommerait beaucoup de main d’œuvre.
Il existe actuellement de nombreuses bonnes solutions d'ingénierie pour développer des applications LLM combinant des données privées. Il est facile d'exécuter une démo avec de bons résultats, mais une telle application doit encore être traitée avec une grande prudence. Après tout, nous ne faisons pas seulement un projet pour manifester devant les réseaux sociaux ou les dirigeants. Ce qui est fourni à l'utilisateur pour la saisie est une boîte de dialogue. Le langage naturel est si large que même si vous testez des dizaines de milliers de résultats, des résultats inattendus peuvent survenir. Après tout, des produits comme New Bing et ChatGPT seront également invités à être injectés. Face à cette incertitude, comment l'éviter en ingénierie et comment la couvrir dans les tests sont autant de problèmes qui doivent être résolus pour les produits matures ou il reste encore beaucoup de travail à faire.
Mais je ne pense pas qu'il soit nécessaire de nier complètement ce type d'outils/frameworks Prompt-Ops. Après tout, de nombreuses bonnes démos peuvent en effet être réalisées pour vérifier les idées à ce stade.
Parlons des formes possibles d'applications LLM après l'ouverture de l'API ChatGPT.
L'application LLM est en fait une nouvelle façon d'interaction homme-machine, qui permet aux utilisateurs de communiquer avec notre système actuel en utilisant le langage naturel. De nombreuses applications peuvent même être simplifiées à une seule fenêtre de discussion.
À l'heure actuelle, en raison du coût élevé de la formation/du déploiement général de grands modèles, les conditions d'une division du travail au niveau industriel sont fondamentalement matures. Il n'y a pas besoin de nombreux grands modèles dans le monde, et les applications LLM le seront. être de petite et moyenne taille. Le choix incontournable pour les entreprises et les développeurs individuels. Les nouvelles formes de paradigmes de programmation/ingénierie exigent que les ingénieurs les apprennent et les comprennent en temps opportun. La pile technologique open source actuelle peut déjà répondre aux besoins de la plupart des produits. Vous pouvez essayer une démo rapide pour vérifier vos idées.
Références :
Tutoriel : ChatGPT sur vos données
Réponse aux questions avec Langchain et QDrant avec Bithout Boilerplate
Atom AL : Changement industriel en profondeur apporté par ChatGPT
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!