ChatGPT hat einen großen Schock in der Branche ausgelöst und in allen Gesellschaftsschichten wird über große Sprachmodelle und allgemeine künstliche Intelligenz diskutiert. KI hat eine mehr als fünfzigjährige Entwicklung hinter sich und befindet sich nun in einer kritischen Phase der horizontalen Entwicklung der Industriestruktur. Dieser Wandel ist auf den Paradigmenwechsel im Bereich NLP zurückzuführen, der sich von „Vortraining + Feinabstimmung“ zu „Vortraining, Aufforderung und Vorhersage“ entwickelt hat. In diesem neuen Modell passen sich nachgelagerte Aufgaben an das vorab trainierte Modell an, sodass ein großes Modell für mehrere Aufgaben geeignet ist. Dieser Wandel hat den Grundstein für die horizontale Arbeitsteilung in der KI-Branche gelegt. Nach und nach sind große Sprachmodelle entstanden, die sich auf die Verbindung von Benutzern und Modellen konzentrieren. Die Arbeitsteilung in der KI-Branche hat zunächst Gestalt angenommen, einschließlich der zugrunde liegenden Infrastruktur (Cloud-Dienstanbieter), großen Modellen, Prompt-Engineering-Plattformen und Terminalanwendungen. Da sich die KI-Branche verändert, können Entwickler große Sprachmodelle (LLM) und Prompt Engineering voll ausschöpfen, um innovative Anwendungen zu entwickeln.
Derzeit müssen wir eine Anwendung auf Basis von LLM entwickeln. Was ist das größte technische Problem, mit dem wir konfrontiert sind?
Nehmen Sie Langchain als Beispiel, um es einfach auszudrücken: LangChain ist eine Kapselung der zugrunde liegenden Fähigkeiten von LLM und eine Art Prompt Engineering oder Prompt-Ops.
Dies ist ein Beispiel für einen Demo-Vergleich mit ChatGPT und LangChain. Die Eingabe lautet: „Wer ist Jay Chous Frau?“ wird ihr aktuelles Alter mit 0,23 multipliziert?“ Es ist ersichtlich, dass die Antwortergebnisse von ChatGPT oder GPT-3.5 falsch sind, da sie keine Suchfunktionen haben. Die API, die LangChain in Kombination mit GPT-3.5 von OpenAI verwendet, gibt das richtige Ergebnis aus. Sie sucht nach und nach nach den richtigen Informationen und erhält das richtige Ergebnis, und der Zwischenprozess wird vom Framework automatisch verarbeitet Fragen.
2.2.2 Konvertieren Sie natürliche Sprache in Python-Code und korrigieren Sie Fehler selbst.Dies ist ein sehr schockierendes Beispiel. In diesem Prozess werden undefinierte Funktionsfehler selbst gefunden und korrigiert. 2.2.3 Abfragen von NBA-Daten mit GPT-3 + Statmuse + Langchain Kombiniert, stellen Sie komplexe Datenfragen und erhalten Sie genaue Antworten. Zum Beispiel: „Wie hoch sind die durchschnittlichen Defensivpunkte der Boston Celtics pro Spiel in dieser NBA-Saison 2022–2023? Wie verändert sich die prozentuale Veränderung im Vergleich zum Durchschnitt der letzten Saison?“
2.2.4 Connect Python REPL öffnet den Browser um Musik abzuspielenEine hübsche Science-Fiction-Szene. Ich habe Langchain verwendet, um eine Verbindung zum Python REPL-Tool herzustellen, „Spiel mir ein Lied“ eingegeben, das WebBrowser-Paket importiert, den Code zum Öffnen des Browsers aufgerufen und es für mich abgespielt . Lied „never gonna give you up“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获得答案。
Wenn Langchain zum Verknüpfen verwendet wird, wird angesichts großer privater Daten ein Einbettungsmodell (Ada von OpenAI) verwendet Berechnung Die Eingabe des Problemvektors, die Verwendung von Vektordatenbanken wie Qdrant zur Verwaltung von Vektoren und Vektorsuchen privater Daten sowie die Verwendung von Langchain als Zwischenverbindung können das Problem lösen, aber der Verbrauch von Token ist ein Kostenproblem, das nicht ignoriert werden kann. Private Bereitstellung + Feinabstimmung können die meisten der zuvor genannten Probleme lösen. Möglicherweise verwenden große und wohlhabende Unternehmen Modellinstanzen und Feinabstimmung, während unabhängige Entwickler in kleinen Unternehmen Frameworks wie Langchain verwenden. Wenn die LLM-Dienstfunktionen von OpenAI in Zukunft überlaufen, wird Prompt möglicherweise nicht mehr benötigt und die Funktionen von Langchain sind möglicherweise sogar enthalten. Für die Entwicklung und den Zugriff auf LLM-Anwendungen ist möglicherweise nur ein Schnittstellenaufruf erforderlich.
2.4 LLM-Anwendungstechnologie-Stack im Jahr 2023
2023 Der neueste Technologie-Stack zur einfachen Erstellung von KI-Demo:
LLM-Anwendung ist eigentlich eine neue Art der Mensch-Computer-Interaktion, die es Benutzern ermöglicht, mit unserem aktuellen System in natürlicher Sprache zu kommunizieren. Viele Anwendungen können sogar auf nur ein Chat-Fenster vereinfacht werden.
Aufgrund der hohen Kosten für die allgemeine Schulung/Bereitstellung großer Modelle sind die Bedingungen für die Arbeitsteilung auf industrieller Ebene grundsätzlich ausgereift. Es besteht weltweit kein Bedarf für viele große Modelle, und LLM-Anwendungen werden dies tun Seien Sie klein und mittelgroß. Die unvermeidliche Wahl für Unternehmen und einzelne Entwickler. Neue Formen von Programmier-/Engineering-Paradigmen erfordern, dass Ingenieure sie rechtzeitig erlernen und verstehen. Der aktuelle Open-Source-Technologie-Stack kann bereits die Anforderungen der meisten Produkte erfüllen. Sie können eine kurze Demo ausprobieren, um Ihre Ideen zu überprüfen.
Referenzen:
Tutorial: ChatGPT über Ihre Daten
Fragenbeantwortung mit Langchain und QDrant mit Bithout Boilerplate
Atom AL: Tiefgreifender industrieller Wandel durch ChatGPT
Das obige ist der detaillierte Inhalt vonChatGPT teilt mit, wie man eine LLM-Anwendung entwickelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!