Last active
September 20, 2023 09:29
-
-
Save tolgakurtuluss/1b290270a51c8a84504927890e84d5e3 to your computer and use it in GitHub Desktop.
LangChainSunum.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nbformat": 4, | |
| "nbformat_minor": 0, | |
| "metadata": { | |
| "colab": { | |
| "provenance": [], | |
| "authorship_tag": "ABX9TyNcgyrOJMFjoOuRFiJL242t", | |
| "include_colab_link": true | |
| }, | |
| "kernelspec": { | |
| "name": "python3", | |
| "display_name": "Python 3" | |
| }, | |
| "language_info": { | |
| "name": "python" | |
| } | |
| }, | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "view-in-github", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "<a href=\"https://colab.research.google.com/gist/tolgakurtuluss/1b290270a51c8a84504927890e84d5e3/langchainsunum.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "#Gerekli Kütüphaneler" | |
| ], | |
| "metadata": { | |
| "id": "ApsIogKhfwq8" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "!pip install langchain openai tiktoken" | |
| ], | |
| "metadata": { | |
| "id": "-xJEqgGHttuS" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "import os\n", | |
| "os.environ['OPENAI_API_KEY'] = 'sk-PLACEYOUROWNAPI'\n", | |
| "\n", | |
| "#print(os.getenv('OPENAI_API_KEY'))" | |
| ], | |
| "metadata": { | |
| "id": "1p4uD7AGRtw7" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "import os\n", | |
| "import openai\n", | |
| "openai.api_key = os.environ['OPENAI_API_KEY']\n", | |
| "\n", | |
| "response = openai.ChatCompletion.create(\n", | |
| " model=\"gpt-3.5-turbo\",\n", | |
| " messages=[\n", | |
| " {\n", | |
| " \"role\": \"user\",\n", | |
| " \"content\": \"Who is Andrew Ng?\"\n", | |
| " }\n", | |
| " ],\n", | |
| " temperature=0,\n", | |
| " max_tokens=256,\n", | |
| " top_p=1,\n", | |
| " frequency_penalty=0,\n", | |
| " presence_penalty=0\n", | |
| ")" | |
| ], | |
| "metadata": { | |
| "id": "mbZ8eMqWOedk" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "print(response)" | |
| ], | |
| "metadata": { | |
| "id": "Y10zQi2xPQoM" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "response['choices'][0]['message']['content']" | |
| ], | |
| "metadata": { | |
| "id": "FAyEJ7I5PSOk" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "# example with a system message\n", | |
| "response = openai.ChatCompletion.create(\n", | |
| " model='gpt-3.5-turbo',\n", | |
| " messages=[\n", | |
| " {\"role\": \"system\", \"content\": \"You are a helpful assistant.\"},\n", | |
| " {\"role\": \"user\", \"content\": \"Write JavaScript code that prints out LangChain\"}\n", | |
| " ],\n", | |
| " temperature=0.3,\n", | |
| ")\n", | |
| "\n", | |
| "print(response['choices'][0]['message']['content'])" | |
| ], | |
| "metadata": { | |
| "id": "J7FGUr1YPW-0" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "#LangChain ile ilk denemeler" | |
| ], | |
| "metadata": { | |
| "id": "k5hJ2JhYUK0a" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain.chat_models import ChatOpenAI\n", | |
| "\n", | |
| "chat = ChatOpenAI(model=\"gpt-3.5-turbo\")\n", | |
| "chat" | |
| ], | |
| "metadata": { | |
| "id": "ztp9Xhr1QL4b" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "template_string = \"\"\"Translate the text \\\n", | |
| "that is delimited by triple backticks \\\n", | |
| "into a style that is {style}. \\\n", | |
| "text: ```{text}```\n", | |
| "\"\"\"" | |
| ], | |
| "metadata": { | |
| "id": "trvxl-urReFK" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain.prompts import ChatPromptTemplate\n", | |
| "\n", | |
| "prompt_template = ChatPromptTemplate.from_template(template_string)" | |
| ], | |
| "metadata": { | |
| "id": "10ENxVMFRf9C" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "prompt_template.messages[0].prompt" | |
| ], | |
| "metadata": { | |
| "id": "hi8DOYQNT9Y8" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "prompt_template.messages[0].prompt.input_variables" | |
| ], | |
| "metadata": { | |
| "id": "9RU4xw9ZT9W5" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "customer_style = \"\"\"American English \\\n", | |
| "in a calm and respectful tone\n", | |
| "\"\"\"\n", | |
| "\n", | |
| "customer_email = \"\"\"\n", | |
| "Arrr, I be fuming that me blender lid \\\n", | |
| "flew off and splattered me kitchen walls \\\n", | |
| "with smoothie! And to make matters worse, \\\n", | |
| "the warranty don't cover the cost of \\\n", | |
| "cleaning up me kitchen. I need yer help \\\n", | |
| "right now, matey!\n", | |
| "\"\"\"\n", | |
| "\n", | |
| "customer_messages = prompt_template.format_messages(\n", | |
| " style=customer_style,\n", | |
| " text=customer_email)" | |
| ], | |
| "metadata": { | |
| "id": "BiLj5VbtT9Uh" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "customer_messages" | |
| ], | |
| "metadata": { | |
| "id": "IcAJ-CmeT9Si" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "# Call the LLM to translate to the style of the customer message\n", | |
| "customer_response = chat(customer_messages)\n", | |
| "customer_response" | |
| ], | |
| "metadata": { | |
| "id": "Qk9iYhQIT9NS" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "print(customer_response.content)" | |
| ], | |
| "metadata": { | |
| "id": "mCRY2OYFT9Kp" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# LangChain ile Konuşma Geçmişi Hafızası - ConversationBufferMemory" | |
| ], | |
| "metadata": { | |
| "id": "Nn8IutEDVHfh" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain.chat_models import ChatOpenAI\n", | |
| "from langchain.chains import ConversationChain\n", | |
| "from langchain.memory import ConversationBufferMemory" | |
| ], | |
| "metadata": { | |
| "id": "9xCk4SgNT9Hy" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "llm = ChatOpenAI(temperature=0.0, model=\"gpt-3.5-turbo\")\n", | |
| "memory = ConversationBufferMemory()\n", | |
| "conversation = ConversationChain(\n", | |
| " llm=llm,\n", | |
| " memory = memory,\n", | |
| " verbose=True\n", | |
| ")\n", | |
| "llm" | |
| ], | |
| "metadata": { | |
| "id": "bRE-FovlT9Eq" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "conversation.predict(input=\"Hi, my name is Tolga\")" | |
| ], | |
| "metadata": { | |
| "id": "UEb8mpSiVPTd" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "conversation.predict(input=\"What is 1+1?\")" | |
| ], | |
| "metadata": { | |
| "id": "fXg888V2VPPo" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "conversation.predict(input=\"What is my name?\")" | |
| ], | |
| "metadata": { | |
| "id": "xfYv14IuVPNp" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "print(memory.buffer)" | |
| ], | |
| "metadata": { | |
| "id": "KAo5OYcrVPLT" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "memory.load_memory_variables({})" | |
| ], | |
| "metadata": { | |
| "id": "YB2n9bxAVPI4" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "memory = ConversationBufferMemory()" | |
| ], | |
| "metadata": { | |
| "id": "yh2TQAliVPGg" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "memory.save_context({\"input\": \"Hi\"},\n", | |
| " {\"output\": \"What's up\"})" | |
| ], | |
| "metadata": { | |
| "id": "G7KCRqm4VfqB" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "print(memory.buffer)" | |
| ], | |
| "metadata": { | |
| "id": "-PxG33txVfnz" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "memory.load_memory_variables({})" | |
| ], | |
| "metadata": { | |
| "id": "zR2nVya1Vfli" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "memory.save_context({\"input\": \"Not much, just hanging\"},\n", | |
| " {\"output\": \"Cool\"})" | |
| ], | |
| "metadata": { | |
| "id": "XVsvWQ5LVfjS" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "memory.load_memory_variables({})" | |
| ], | |
| "metadata": { | |
| "id": "198Q-NtRVfhE" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "#ConversationBufferWindowMemory, ConversationSummaryMemory, ConversationTokenBufferMemory" | |
| ], | |
| "metadata": { | |
| "id": "g2sKNvbzVfeh" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# Chain Örnekleri\n", | |
| "\n", | |
| "* LLMChain\n", | |
| "* SimpleSequentialChain\n", | |
| "* SequentialChain\n", | |
| "* Router Chain" | |
| ], | |
| "metadata": { | |
| "id": "dbiR9ZsRWu7z" | |
| } | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# LLMChain - \"Pizza kesmek için özel ışın kılıcı\"" | |
| ], | |
| "metadata": { | |
| "id": "kCNsv8yFYrAv" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain.chat_models import ChatOpenAI\n", | |
| "from langchain.prompts import ChatPromptTemplate\n", | |
| "from langchain.chains import LLMChain\n", | |
| "\n", | |
| "llm = ChatOpenAI(temperature=0.9, model=\"gpt-3.5-turbo\")\n", | |
| "prompt = ChatPromptTemplate.from_template(\n", | |
| " \"What is the best name to describe \\\n", | |
| " a company that makes {product}?\"\n", | |
| ")\n", | |
| "\n", | |
| "chain = LLMChain(llm=llm, prompt=prompt)\n", | |
| "product = \"Specialised Lightsaber for cutting pizza slices.\"\n", | |
| "chain.run(product)" | |
| ], | |
| "metadata": { | |
| "id": "v0pPBBQdVfcH" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# SimpleSequentialChain - \"Ürün için isim ve açıklama\"" | |
| ], | |
| "metadata": { | |
| "id": "ezhkrhrrYSOH" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain.chains import SimpleSequentialChain\n", | |
| "\n", | |
| "llm = ChatOpenAI(temperature=0.9, model=\"gpt-3.5-turbo\")\n", | |
| "\n", | |
| "# prompt template 1\n", | |
| "first_prompt = ChatPromptTemplate.from_template(\n", | |
| " \"What is the best name to describe \\\n", | |
| " a company that makes {product}?\"\n", | |
| ")\n", | |
| "\n", | |
| "# Chain 1\n", | |
| "chain_one = LLMChain(llm=llm, prompt=first_prompt)\n", | |
| "\n", | |
| "# prompt template 2\n", | |
| "second_prompt = ChatPromptTemplate.from_template(\n", | |
| " \"Write a 20 words description for the following \\\n", | |
| " company:{company_name}\"\n", | |
| ")\n", | |
| "# chain 2\n", | |
| "chain_two = LLMChain(llm=llm, prompt=second_prompt)\n", | |
| "\n", | |
| "overall_simple_chain = SimpleSequentialChain(chains=[chain_one, chain_two],\n", | |
| " verbose=True\n", | |
| " )\n", | |
| "overall_simple_chain" | |
| ], | |
| "metadata": { | |
| "id": "gvTlXBArVfZh" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "overall_simple_chain.run(product)" | |
| ], | |
| "metadata": { | |
| "id": "Ho4UF48QVfXJ" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# SequentialChain - \"Trendyol Ürün Yorumu\"" | |
| ], | |
| "metadata": { | |
| "id": "lQkZu0DUYPRA" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain.chains import SequentialChain\n", | |
| "\n", | |
| "llm = ChatOpenAI(temperature=0.9, model=\"gpt-3.5-turbo\",verbose=True)\n", | |
| "\n", | |
| "review = 'Alırken bilerek yorumları okudum küçük beden geldiğini söylediler l giyiyorum \\\n", | |
| "bilerek xl söyledim yine küçük geldi kapüşonlusuda fotoğrafdaki gibi geniş değil küçük poşet gibi \\\n", | |
| "ve içinin kumaşı güzel fakat ince yine de tercih etmiyorum'\n", | |
| "\n", | |
| "# prompt template 1: translate to english\n", | |
| "first_prompt = ChatPromptTemplate.from_template(\n", | |
| " \"Translate the following review to english:\"\n", | |
| " \"\\n\\n{Review}\"\n", | |
| ")\n", | |
| "# chain 1: input= Review and output= English_Review\n", | |
| "chain_one = LLMChain(llm=llm, prompt=first_prompt,\n", | |
| " output_key=\"English_Review\"\n", | |
| " )\n", | |
| "\n", | |
| "second_prompt = ChatPromptTemplate.from_template(\n", | |
| " \"Can you summarize the following review in 1 sentence:\"\n", | |
| " \"\\n\\n{English_Review}\"\n", | |
| ")\n", | |
| "# chain 2: input= English_Review and output= summary\n", | |
| "chain_two = LLMChain(llm=llm, prompt=second_prompt,\n", | |
| " output_key=\"summary\"\n", | |
| " )\n", | |
| "\n", | |
| "# prompt template 3: translate to english\n", | |
| "third_prompt = ChatPromptTemplate.from_template(\n", | |
| " \"What language is the following review:\\n\\n{Review}\"\n", | |
| ")\n", | |
| "# chain 3: input= Review and output= language\n", | |
| "chain_three = LLMChain(llm=llm, prompt=third_prompt,\n", | |
| " output_key=\"language\"\n", | |
| " )\n", | |
| "\n", | |
| "# prompt template 4: follow up message\n", | |
| "fourth_prompt = ChatPromptTemplate.from_template(\n", | |
| " \"Write a follow up response to the following \"\n", | |
| " \"summary in the specified language:\"\n", | |
| " \"\\n\\nSummary: {summary}\\n\\nLanguage: {language}\"\n", | |
| ")\n", | |
| "# chain 4: input= summary, language and output= followup_message\n", | |
| "chain_four = LLMChain(llm=llm, prompt=fourth_prompt,\n", | |
| " output_key=\"followup_message\"\n", | |
| " )\n", | |
| "\n", | |
| "# overall_chain: input= Review\n", | |
| "# and output= English_Review,summary, followup_message\n", | |
| "overall_chain = SequentialChain(\n", | |
| " chains=[chain_one, chain_two, chain_three, chain_four],\n", | |
| " input_variables=[\"Review\"],\n", | |
| " output_variables=[\"English_Review\", \"summary\",\"followup_message\"],\n", | |
| " verbose=True\n", | |
| ")\n", | |
| "\n", | |
| "overall = overall_chain(review)\n", | |
| "overall" | |
| ], | |
| "metadata": { | |
| "id": "G1EcljJnXPHY" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# Embedding" | |
| ], | |
| "metadata": { | |
| "id": "A0n9k0HdagCG" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain.embeddings import OpenAIEmbeddings\n", | |
| "embeddings = OpenAIEmbeddings()" | |
| ], | |
| "metadata": { | |
| "id": "dUsRu-vPXPFH" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "embed = embeddings.embed_query(\"My name is Tolga.\")\n", | |
| "print(len(embed))" | |
| ], | |
| "metadata": { | |
| "id": "i3N71QoqXPCw" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "print(embed[:5])" | |
| ], | |
| "metadata": { | |
| "id": "AJke8f9lXO__" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "#https://python.langchain.com/docs/integrations/tools/" | |
| ], | |
| "metadata": { | |
| "id": "k6e1B-lDifCK" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# PDF'e soru sorma - EBEBK" | |
| ], | |
| "metadata": { | |
| "id": "5N6zoqhUdRR1" | |
| } | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "![1_RoJGx1aKfmZ41CBe5qHbYw[1].png](data:image/png;base64,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)" | |
| ], | |
| "metadata": { | |
| "id": "dQVuNg7OdK1N" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "#https://www.kap.org.tr/tr/sirket-bilgileri/ozet/5861-ebebek-magazacilik-a-s" | |
| ], | |
| "metadata": { | |
| "id": "PEoS2CIGevGT" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "#PDF indirme fonksiyonu\n", | |
| "\n", | |
| "import requests\n", | |
| "\n", | |
| "def download_file(url, file_name, headers):\n", | |
| " response = requests.get(url, headers=headers)\n", | |
| "\n", | |
| " if response.status_code == 200:\n", | |
| " with open(file_name, \"wb\") as f:\n", | |
| " f.write(response.content)\n", | |
| " else:\n", | |
| " print(response.status_code)\n", | |
| "\n", | |
| "headers = {\"User-Agent\": \"Chrome/51.0.2704.103\",}\n", | |
| "\n", | |
| "url = \"https://www.kap.org.tr/tr/BildirimPdf/1192434\"\n", | |
| "\n", | |
| "file_name = \"ebebek_kap_bildirim.pdf\"\n", | |
| "\n", | |
| "download_file(url, file_name, headers)" | |
| ], | |
| "metadata": { | |
| "id": "8NahupazeZm8" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "#!pip install pypdf" | |
| ], | |
| "metadata": { | |
| "id": "siV0h7yweqs8" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "import os\n", | |
| "from langchain.document_loaders import PyPDFLoader\n", | |
| "\n", | |
| "pdf_loader = PyPDFLoader('/content/ebebek_kap_bildirim.pdf')\n", | |
| "documents = pdf_loader.load()\n", | |
| "documents" | |
| ], | |
| "metadata": { | |
| "id": "D6f7xNAIXO9g" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain.llms import OpenAI\n", | |
| "from langchain.chains.question_answering import load_qa_chain\n", | |
| "\n", | |
| "# we are specifying that OpenAI is the LLM that we want to use in our chain\n", | |
| "chain = load_qa_chain(llm=OpenAI())\n", | |
| "#query = 'Hissenin baz fiyatı ne kadardır?'\n", | |
| "query = 'EBEBK hangi gün işlem görmeye başlayacak?'\n", | |
| "\n", | |
| "response = chain.run(input_documents=documents, question=query)\n", | |
| "print(response)" | |
| ], | |
| "metadata": { | |
| "id": "E6Gm45M1dEEU" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "## csv'ye soru sormak - (Transfermarkt Premier Lig Dataset)" | |
| ], | |
| "metadata": { | |
| "id": "N49jDsgQN7wc" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "#CSV indirme fonksiyonu\n", | |
| "\n", | |
| "url = \"https://raw.githubusercontent.com/ewenme/transfers/master/data/premier-league.csv\"\n", | |
| "file_name= \"transfermarkt.csv\"\n", | |
| "\n", | |
| "download_file(url, file_name, headers)" | |
| ], | |
| "metadata": { | |
| "id": "UwgBBjDbg-F0" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "import pandas as pd\n", | |
| "\n", | |
| "from langchain.agents import create_csv_agent\n", | |
| "from langchain.llms import OpenAI\n", | |
| "\n", | |
| "llm=OpenAI(temperature=0,verbose=True)\n", | |
| "agent = create_csv_agent(llm, '/content/transfermarkt.csv', verbose=True)\n", | |
| "\n", | |
| "df = pd.read_csv('/content/transfermarkt.csv')\n", | |
| "df" | |
| ], | |
| "metadata": { | |
| "id": "_MhNDozfNMRM" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "agent" | |
| ], | |
| "metadata": { | |
| "id": "aIUtAw87Np_G" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "agent.agent.llm_chain.prompt.template" | |
| ], | |
| "metadata": { | |
| "id": "ZFnUBfI8NrIU" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "agent.run(\"Find the oldest and youngest players. Give brief summary about them.\")" | |
| ], | |
| "metadata": { | |
| "id": "Uht5mH8tNtl9" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "## db'ye SQL Sorgusu Atmak - (titanic sql database)" | |
| ], | |
| "metadata": { | |
| "id": "SqUqot2S41Zh" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain import OpenAI\n", | |
| "\n", | |
| "from langchain.agents import create_sql_agent\n", | |
| "from langchain.agents.agent_toolkits import SQLDatabaseToolkit\n", | |
| "from langchain.sql_database import SQLDatabase\n", | |
| "from langchain.llms.openai import OpenAI\n", | |
| "from langchain.agents import AgentExecutor\n", | |
| "from langchain.agents.agent_types import AgentType\n", | |
| "from langchain.chat_models import ChatOpenAI\n", | |
| "\n", | |
| "#SQLdb indirme fonksiyonu\n", | |
| "url = \"https://github.com/brunogarcia/langchain-titanic-sqlite/raw/main/titanic.db\"\n", | |
| "file_name= \"titanic.db\"\n", | |
| "download_file(url, file_name, headers)\n", | |
| "\n", | |
| "db = SQLDatabase.from_uri(\"sqlite:///titanic.db\")\n", | |
| "toolkit = SQLDatabaseToolkit(db=db, llm=OpenAI(temperature=0))\n", | |
| "\n", | |
| "agent_executor = create_sql_agent(\n", | |
| " llm=OpenAI(temperature=0),\n", | |
| " toolkit=toolkit,\n", | |
| " verbose=True,\n", | |
| " agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,\n", | |
| ")\n", | |
| "\n", | |
| "agent_executor.run(\"How many passengers were in each class?\")\n", | |
| "\n", | |
| "# How many passengers survived?\n", | |
| "# What was the average age of each passenger class?" | |
| ], | |
| "metadata": { | |
| "id": "KQ4gbbc5RtuL" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "#Python kodu oluşturma ve çalıştırma" | |
| ], | |
| "metadata": { | |
| "id": "kfykoCAiH6Fw" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "import os\n", | |
| "from langchain.llms.openai import OpenAI\n", | |
| "from langchain.agents.agent_types import AgentType\n", | |
| "from langchain.agents.agent_toolkits import create_python_agent\n", | |
| "from langchain.tools.python.tool import PythonREPLTool\n", | |
| "from langchain.python import PythonREPL\n", | |
| "\n", | |
| "\n", | |
| "agent_executor = create_python_agent(\n", | |
| " llm=OpenAI(temperature=0.5, max_tokens=1000),\n", | |
| " tool=PythonREPLTool(),\n", | |
| " verbose=True,\n", | |
| " agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,\n", | |
| ")\n", | |
| "\n", | |
| "agent_executor.run(\"Build me a simple pomodoro app and run it.\")\n", | |
| "\n", | |
| "#Write a function to check if 119 a prime number and test it." | |
| ], | |
| "metadata": { | |
| "id": "tc1usGa059mJ" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# Wikipedia/DuckDuckGo Search ile araştırma yapmak (part-1)\n" | |
| ], | |
| "metadata": { | |
| "id": "jwTTg8zgF48Z" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "#!pip install duckduckgo-search" | |
| ], | |
| "metadata": { | |
| "id": "YeQ_f0btDWaz" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain import OpenAI\n", | |
| "from langchain.tools import DuckDuckGoSearchRun\n", | |
| "from langchain.agents import initialize_agent\n", | |
| "from langchain.agents import Tool\n", | |
| "\n", | |
| "llm = OpenAI(temperature=0)\n", | |
| "\n", | |
| "search = DuckDuckGoSearchRun()\n", | |
| "\n", | |
| "duckduckgo_tool = Tool(\n", | |
| " name='DuckDuckGo Search',\n", | |
| " func= search.run,\n", | |
| " description=\"Useful for when you need to do a search on the internet to find information that another tool can't find.\"\n", | |
| ")\n", | |
| "\n", | |
| "tools = [duckduckgo_tool]\n", | |
| "\n", | |
| "search_agent = initialize_agent(\n", | |
| " agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,\n", | |
| " tools=tools,\n", | |
| " llm=llm,\n", | |
| " verbose=True,\n", | |
| " max_iterations=3,\n", | |
| ")\n", | |
| "\n", | |
| "search_agent.run(\"What is the total number of commits in langchain repository in Github?\")\n", | |
| "#what Arxiv is and what fields it is used in?" | |
| ], | |
| "metadata": { | |
| "id": "RMT3nRE3CwEc" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# Arxiv üzerinden araştırma yapmak (part-2)\n" | |
| ], | |
| "metadata": { | |
| "id": "NepSLc8TFzXh" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "#!pip install arxiv" | |
| ], | |
| "metadata": { | |
| "id": "F5hePs7HGGA5" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "import os\n", | |
| "from langchain.agents import load_tools, initialize_agent, AgentType\n", | |
| "\n", | |
| "llm = OpenAI(temperature=0)\n", | |
| "tools = load_tools(\n", | |
| " [\"arxiv\"]\n", | |
| ")\n", | |
| "\n", | |
| "agent_chain = initialize_agent(\n", | |
| " tools,\n", | |
| " llm,\n", | |
| " agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,\n", | |
| " verbose=True,\n", | |
| ")\n", | |
| "\n", | |
| "agent_chain.run(\n", | |
| " \"What is RLHF?\",\n", | |
| ")\n", | |
| "\n", | |
| "# What's the paper 1706.03762 about?\"\n", | |
| "# https://arxiv.org/abs/1706.03762" | |
| ], | |
| "metadata": { | |
| "id": "--801WngCE4O" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# Youtube Arama Toolu" | |
| ], | |
| "metadata": { | |
| "id": "hW1P8PVHLhB0" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "pip install youtube_search" | |
| ], | |
| "metadata": { | |
| "id": "2h5c7DZALj_d" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "import os\n", | |
| "from langchain.llms import OpenAI\n", | |
| "from langchain.tools import YouTubeSearchTool\n", | |
| "from langchain.agents import initialize_agent, Tool\n", | |
| "from langchain.agents import AgentType\n", | |
| "\n", | |
| "#langchain.debug = False\n", | |
| "\n", | |
| "tool = YouTubeSearchTool()\n", | |
| "\n", | |
| "tools = [\n", | |
| " Tool(\n", | |
| " name=\"Search\",\n", | |
| " func=tool.run,\n", | |
| " description=\"useful for when you need to give links to youtube videos. Remember to put https://youtube.com/ in front of every link to complete it\",\n", | |
| " )\n", | |
| "]\n", | |
| "\n", | |
| "agent = initialize_agent(\n", | |
| " tools,\n", | |
| " OpenAI(temperature=0),\n", | |
| " agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,\n", | |
| " verbose=False,\n", | |
| ")\n", | |
| "\n", | |
| "agent.run('langchain official page videos,3')" | |
| ], | |
| "metadata": { | |
| "id": "gXsb1bhiLdZO" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "#Kendi fonksiyonlarınızı yazarak Tool olarak kullanmak" | |
| ], | |
| "metadata": { | |
| "id": "jTMcf2lELHcm" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "import os\n", | |
| "from langchain import OpenAI\n", | |
| "from langchain.agents import initialize_agent, AgentType,Tool\n", | |
| "\n", | |
| "def carpim_islemi(a, b):\n", | |
| " return a * b\n", | |
| "\n", | |
| "def parse_carpim_islemi(string):\n", | |
| " a, b = string.split(\",\")\n", | |
| " return carpim_islemi(int(a), int(b))\n", | |
| "\n", | |
| "\n", | |
| "llm = OpenAI(temperature=0)\n", | |
| "tools = [\n", | |
| " Tool(\n", | |
| " name=\"Multiplier\",\n", | |
| " func=parse_carpim_islemi,\n", | |
| " description=\"useful for when you need to multiply two numbers together. The input to this tool should be a comma separated list of numbers of length two, representing the two numbers you want to multiply together. For example, `1,2` would be the input if you wanted to multiply 1 by 2.\",\n", | |
| " )\n", | |
| "]\n", | |
| "agent = initialize_agent(\n", | |
| " tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True\n", | |
| ")\n", | |
| "\n", | |
| "agent.run(\"33,99\")" | |
| ], | |
| "metadata": { | |
| "id": "BeFoVJWDLG1G" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "#Unofficial olarak ChatGPT AI Pluginleri kullanmak - Etihad Airways Flight Search" | |
| ], | |
| "metadata": { | |
| "id": "CSxHgl5FhnFj" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "from langchain.chat_models import ChatOpenAI\n", | |
| "from langchain.agents import load_tools, initialize_agent, AgentType\n", | |
| "from langchain.tools import AIPluginTool\n", | |
| "import langchain\n", | |
| "\n", | |
| "langchain.debug=True\n", | |
| "langchain.verbose=True\n", | |
| "def initialize_chat_agent():\n", | |
| " # Load language model\n", | |
| " chat_model = ChatOpenAI(temperature=0, max_tokens=2048,verbose=True)\n", | |
| "\n", | |
| " # Load required tools\n", | |
| " tool = AIPluginTool.from_plugin_url(\"https://gpt-etihad.botim.me/.well-known/ai-plugin.json\")\n", | |
| " tools = load_tools([\"requests_all\"]) + [tool]\n", | |
| "\n", | |
| " # Initialize chat agent chain\n", | |
| " agent_chain = initialize_agent(tools, chat_model, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)\n", | |
| "\n", | |
| " return agent_chain\n", | |
| "\n", | |
| "agent_chain = initialize_chat_agent()\n", | |
| "\n", | |
| "query = \"Search flights from IST to AUH on 11 December 2023.\"\n", | |
| "agent_chain.run(query)" | |
| ], | |
| "metadata": { | |
| "id": "NM_bNX61hmhu" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "source": [ | |
| "# LLM ile komut satırı arayüzü(cmd) çalıştırmak" | |
| ], | |
| "metadata": { | |
| "id": "qtiSdzBCBzxM" | |
| } | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "import os\n", | |
| "from langchain.chat_models import ChatOpenAI\n", | |
| "from langchain.agents import AgentType\n", | |
| "from langchain.tools import ShellTool,PythonREPLTool\n", | |
| "from langchain.agents import initialize_agent\n", | |
| "\n", | |
| "llm = ChatOpenAI(temperature=0)\n", | |
| "\n", | |
| "shell_tool = ShellTool()\n", | |
| "pythonrepl_tool = PythonREPLTool()\n", | |
| "\n", | |
| "shell_tool.description = shell_tool.description + f\"args {shell_tool.args}\".replace(\n", | |
| " \"{\", \"{{\"\n", | |
| ").replace(\"}\", \"}}\")\n", | |
| "\n", | |
| "agent = initialize_agent(\n", | |
| " [shell_tool,pythonrepl_tool], llm, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True\n", | |
| ")\n", | |
| "\n", | |
| "agent.run(\n", | |
| " \"create a .txt file called model_trainer and inside it, add code that trains a basic convolutional neural network for 4 epochs\"\n", | |
| ")\n", | |
| "\n", | |
| "#rename .txt file called model_trainer into cnn_trainer\n", | |
| "\n", | |
| "#build a pomodoro app in python\"" | |
| ], | |
| "metadata": { | |
| "id": "9YpU-7N97jPo" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "source": [ | |
| "LangSmith\n", | |
| "https://smith.langchain.com/\n", | |
| "\n", | |
| "#Build and deploy LLM apps with confidence\n", | |
| "#An all-in-one developer platform for every step of the application lifecycle.\n", | |
| "\n", | |
| "#Use the invite code `lang_learners_2023`" | |
| ], | |
| "metadata": { | |
| "id": "kDuSdsISMMrE" | |
| }, | |
| "execution_count": null, | |
| "outputs": [] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment