Maison >Périphériques technologiques >IA >Partage ChatGPT - Comment développer une application LLM

Partage ChatGPT - Comment développer une application LLM

PHPz
PHPzavant
2023-04-12 21:43:042485parcourir

1​Contexte​

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.

2 Application sous Prompt-Ops

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 ?

  • Le grand modèle de langage ne peut pas être connecté à Internet et ne peut pas obtenir les dernières informations
  • Le grand modèle de langage n'a pas nos données privées et ne peut pas répondre aux questions verticales
  • L'API ouverte (text-davinci-003) du Le grand modèle de langage n'est pas comme ChatGPT Excellentes capacités contextuelles
  • Les grands modèles de langage ne peuvent pas piloter d'autres outils.

2.1 Les frameworks d'ingénierie tels que Langchain résolvent ces problèmes d'ingénierie

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.

  • Il peut accéder à divers services LLM et résumer les appels de divers grands modèles de langage
  • Il peut créer divers modèles d'invite pour implémenter des modèles d'invite personnalisés
  • Il peut créer des chaînes pour combiner les appels à PromptTemplate
  • Il peut utiliser divers outils pour réaliser des choses pour lesquelles GPT-3 n'est actuellement pas doué, comme la recherche/les mathématiques/la liaison de bases de données privées/le code Python
  • Il peut utiliser des agents pour piloter LLM afin de déterminer quelles actions entreprendre et dans quel ordre. Les actions peuvent consister à utiliser un outil et à observer sa sortie, ou elles peuvent être renvoyées à l'utilisateur.
  • Il peut réaliser une modélisation de l'historique des conversations grâce à son module Mémoire.

2.2 Quelques exemples de développement de Langchain

2.2.1 GPT combiné avec la recherche

Partage ChatGPT - Comment développer une application LLM

Partage ChatGPT - Comment développer une application LLM

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.

2.2.2 Convertir le langage naturel en code Python et corriger les erreurs par lui-même

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 ? »

Partage ChatGPT - Comment développer une application LLM

2.2.4 Connect Python REPL ouvre le navigateur ? » pour jouer de la musique

Partage ChatGPT - Comment développer une application LLMUne 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("给我播放一首音乐")

2.2.5   连接私有数据

连接私有数据对第三方企业做LLM应用来说非常重要。下面举几个例子

  • LangchainJs的文档,结合了Langchain:AI-powered search for LangchainJS Documentation,你可以直接问文档内容、技术细节。

Partage ChatGPT - Comment développer une application LLM

  • 数据库产品 Supabase也做了同样的事情,将自己的文档与ChatGPT相连接,使得开发者可以很方便的询问/查找自己遇到的技术问题。https://supabase.com/docs

Partage ChatGPT - Comment développer une application LLM

  • 政府信息问答的一个例子:Co-pilot for government

法律公文和政策条款一般都非常复杂繁琐,这个demo中将旧金山政府的信息用Langchain与GPT结合,做到询问其中细节能获得准确回复的效果。

Partage ChatGPT - Comment développer une application LLM

> 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.

2.3   结合私有数据问答

LLM应用与私有数据交互非常重要,我看到无数人在问一些ChatGPT无法回答的问题了:问认不认识谁、问自己公司业务细节、问各种可能不包含在预训练数据集里的东西。这些都已用Langchain和LlaMaIndex来解决。试想一下,将私有数据与LLM相结合,将改变数据原有的访问方式,通过问答能很自然地获取到自己需要的信息,这是比当前的搜索/打标分类都要高效的数据交互方式。

2.3.1   如何构建一个基于私有数据的LLM问答系统

Partage ChatGPT - Comment développer une application LLM

向量数据库现在看起来是构建LLM App中很关键的一个组件。首先 LLM 的预训练和微调过程不可能包含我们所期待的私有数据,因此如何将LLM关联到私有数据成为一个很关键的需求。而且LLM的“接口”-自然语言通常不是像Key-Value的映射那样精确地。而且在这一阶段我们希望LLM去理解我们的知识库,而不是简单的在其中搜索相同的字符串,我们希望询问关于我们知识库的细节,并给出一定理解后的答案(以及来源),这样匹配向量这样的搜索方式是一个非常合适且关键的解决方案。还有一个关键点是,LLM在每次调用是按token计费(即文本量),并且目前的接口的上下文有着4096 tokens的限制。,因此面对庞大的数据,我们也不可能将所有的数据一次性传给LLM。因此才有了第一张图那个流程图的结构。本地预先将我们私有的数据转成向量存在Qdrant里,用户问答时,将用户的问题转为向量,然后去Qdrant里进行搜索(相似性匹配)得到Top K个结果,然后将这些结果(注意这里的结果已经是自然语言了)传给LLM进行总结输出。

2.3.2   结合私有数据问答的抽象流程

这里使用Langchain社区博客的流程图为例

Partage ChatGPT - Comment développer une application LLM

私有数据分割成小于LLM上下文的分块,创建向量后存入向量数据库

Partage ChatGPT - Comment développer une application LLM

将问题计算向量后在向量数据库进行相似性搜索,算出相关性较高的top k个结果后拼接prompt送往LLM获得答案。

2.3.3 Composants importants

  • Modèle OpenAI Ada : le modèle text-embedding-ada-002 peut rapidement encoder un vecteur à 1536 dimensions. Nous pouvons utiliser ce vecteur pour calculer la similarité entre les textes.
  • Langchain / LLamaIndex : Langchain comprend une variété de séparateurs de texte et de connecteurs de documents pour faciliter le fractionnement des fichiers et leur indexation dans des bases de données vectorielles ; LlamaIndex peut charger des données à partir du stockage vectoriel, comme tout autre connecteur de données. Ces données peuvent ensuite être utilisées dans la structure de données LlamaIndex.
  • Base de données Vector, il existe de nombreuses options : Chroma / FAISS / Milvus / PGVector / Qdrant / Pinecone, etc.

2.3.4 Déploiement privé d'OpenAI et problèmes de coûts

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 :

  • Hébergement : Vercel
  • Front-end : Next.js
  • Back-end : Vercel avec flask
  • Base de données : Supabase
  • Modèle AI : OpenAI / Replicate / Hugging Face
  • Couche de framework LLM : LangChain / LLaMaIndex
  • Stockage/Recherche de vecteurs : Pinecone / FAISS

2.5 Prompt-Ops Le plus gros problème en ce moment

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.

3 Quelques formes de produits possibles à l'avenir

Parlons des formes possibles d'applications LLM après l'ouverture de l'API ChatGPT.

  • Le chat conversationnel est la méthode d'application la plus intuitive et l'historique des conversations est géré sur l'API.
  • Le chat de personnage virtuel, basé sur le chat de conversation de base, crée des invites de définition de personnage sur le prefix_message de l'API pour obtenir un effet similaire à Character.ai. Aller plus loin peut être en tant que personnage de jeu, personne virtuelle, assistant XR, etc.
  • Un outil d'écriture assistée par texte similaire à Notion. Actuellement, Notion et FlowUs ont créé des applications similaires. À l'avenir, l'intégration des éditeurs dans diverses communautés sera également une tendance, réduisant le seuil de publication des utilisateurs et améliorant la qualité de la publication.
  • L'outil de synthèse des données implémente Chat-Your-Data, fournit une saisie de documents aux utilisateurs et permet aux utilisateurs de discuter avec les données qu'ils fournissent. En substance, il s'agit uniquement de données publiques sur Internet et de données privées des utilisateurs.
  • Chat-Your-Data pour les grandes entreprises, chaque grande entreprise combine les données privées des grandes entreprises pour fournir de meilleurs services basés sur l'activité d'origine. Par exemple, Dianping, qui combine les avis des utilisateurs, peut utiliser « Je veux aller dans un bar qui joue de la musique néo-soul et R&B ». Par exemple, notre page de détails sur l'entreprise peut résumer toutes les évaluations de ce produit par les utilisateurs et permettre aux utilisateurs de le faire. fournissez des informations sur ce produit. Faites une séance de questions et réponses.
  • Intégrez-vous aux affaires gouvernementales, aux soins médicaux, à l'éducation et à d'autres domaines, intégrez les sites Web officiels en ligne des institutions et les grands écrans hors ligne pour fournir de meilleurs services aux citoyens.
  • Combiné avec d'autres outils comme IFTTT ou divers protocoles privés, LLM peut accéder à plus d'outils et de systèmes, par exemple : scénarios IoT, Office Copilot.

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.

4 Résumé

À 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 :

  • https://blog.langchain.dev/tutorial-chatgpt-over-your-data/

Tutoriel : ChatGPT sur vos données

  • https://qdrant.tech/articles/ LANGChain -Intégration/

Réponse aux questions avec Langchain et QDrant avec Bithout Boilerplate

  • https://mp.weixin.qq.com/s/vz6n4bh41yvd1yvd1hqgq

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer