برنامه نویسی

با استفاده از Langchain یک عامل اخبار AI در زمان واقعی ایجاد کنید-فقط در چند مرحله!

در چشم انداز به سرعت در حال تحول هوش مصنوعی ، عوامل هوش مصنوعی به عنوان یکی از کاربردهای عملی و قدرتمند مدلهای بزرگ زبان ظاهر شده اند. این سیستم های هوشمند می توانند زبان طبیعی ، دلیل در مورد کارهای پیچیده را درک کنند ، و به طور مستقل از ابزارهای تخصصی برای تحقق اهداف استفاده می کنند – مانند داشتن یک دستیار دیجیتالی که می تواند فکر کند ، برنامه ریزی کند و اقدامات را از طرف شما انجام دهد. امروز ، ما چگونگی ساخت یک عامل پیشرفته در زمان واقعی AI را که می تواند رویدادهای فعلی را بدست آورد ، جستجوهای وب را انجام می دهیم و در مکالمات معنی دار شرکت می کنیم ، همه در حالی که به صورت محلی روی دستگاه خود کار می کنیم ، بررسی خواهیم کرد.

درک عوامل هوش مصنوعی

تصویر عوامل هوش مصنوعی

نمایندگان هوش مصنوعی یک جهش قابل توجه از چت های سنتی یا سیستم های پاسخ به سؤال ساده را نشان می دهند. در اصل آنها ، عوامل هوش مصنوعی نهادهای نرم افزاری خودمختار هستند که می توانند محیط خود را درک کنند ، تصمیم بگیرند و برای دستیابی به اهداف خاص اقدامات انجام دهند. بر خلاف مدل های هوش مصنوعی استاتیک که به سادگی به اعلان ها پاسخ می دهند ، مأمورین توانایی استدلال در مورد مشکلات را دارند ، برنامه ریزی راه حل های چند مرحله ای و به صورت پویا از یک ابزار از توابع تخصصی انتخاب می کنند.

غواصی عمیق معماری: بلوک های ساختمانی از خبرنامه ما

معماری عامل AI

خبر واقعی اخبار ما در زمان واقعی ، معماری عامل مدرن را از طریق طراحی پیشرفته و در عین حال قابل دسترسی خود نشان می دهد. ساخته شده بر روی Langchain-یک چارچوب منبع باز که به طور خاص برای برنامه های LLM طراحی شده است-این سیستم نشان می دهد که چگونه می توان قابلیت های استدلال را با عملکرد عملی ترکیب کرد.

پایه و اساس نماینده ما بر روی مدلهای GPT OpenAI قرار دارد ، به طور خاص از قابلیت های فراخوانی عملکردی که به مدل اجازه می دهد تعیین کند چه موقع و چگونه از ابزارهای خارجی استفاده می کند ، استفاده می کند. این صرفاً در مورد تولید متن نیست. این در مورد تصمیم گیری هوشمندانه است. هنگامی که کاربر “آخرین اخبار در مورد تغییرات آب و هوا” را درخواست می کند ، نماینده باید قصد را درک کند ، تصمیم بگیرد که از کدام ابزار خبری استفاده کند ، تماس API مناسب را قالب بندی کند ، نتایج را پردازش کند و یک پاسخ منسجم را سنتز کند.

گردش کار عوامل هوش مصنوعی

ابزار ابزار عامل ، تطبیق پذیری سیستم های AI مدرن را به نمایش می گذارد. عملکرد جستجوی وب از Duckduckgo برای ارائه اطلاعات کلی فراتر از داده های آموزش مدل استفاده می کند ، و اطمینان می دهد که عامل می تواند به اطلاعات فعلی در مورد هر موضوع دسترسی پیدا کند.

دو ابزار خبری تخصصی در پشت سر هم کار می کنند: آخرین نواحی داستانهای مبتنی بر دسته یا موضوع خاص را به دست می آورد ، در حالی که SocationNews برای بازیابی خبرهای خاص جغرافیا بهینه شده است. یک ابزار ماشین حساب عملیات ریاضی را با خیال راحت و کارآمد انجام می دهد ، در حالی که ابزار زمان پایه و اساس زمانی را فراهم می کند و به نماینده کمک می کند تا “جریان” را در زمینه درخواست های زمان واقعی درک کند.

AI عامل: اجرای

ابتدا یک محیط مجازی Python ایجاد کنید و سپس وابستگی های مورد نیاز را نصب کنید.

pip install --upgrade "langchain>=0.2.0" "langchain-openai>=0.0.5" "langchain-community>=0.0.15"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

کلیدهای API خود را برای هدف تماس ابزار AI Agent ذکر کنید

OPENAI_API_KEY=Add your openai api key
TAVILY_API_KEY=Add your Tavily api key
NEWSAPI_API_KEY=Add your newsapi pai key
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در زیر گردش کار کد اجرای عامل ما آورده شده است.

import os
from dotenv import load_dotenv
import gradio as gr
from langchain_openai import ChatOpenAI
from langchain.agents import create_openai_tools_agent, AgentExecutor
from langchain_core.tools import Tool
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import AIMessage, HumanMessage
from langchain_community.tools.ddg_search import DuckDuckGoSearchRun
from datetime import datetime
import requests
import json

# Load environment variables
load_dotenv()

# Initialize the language model
llm = ChatOpenAI(
    model="gpt-4",
    temperature=0
)

# Define custom tools
def get_current_time() -> str:
    """Get the current date and time."""
    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")

def calculator(expression: str) -> str:
    """Evaluate a mathematical expression."""
    try:
        return str(eval(expression))
    except Exception as e:
        return f"Error calculating: {str(e)}"

def get_latest_news(query: str = "", category: str = "") -> str:
    """
    Get the latest news headlines.
    Parameters:
    - query: Search term for specific news (optional)
    - category: News category like business, entertainment, health, science, sports, technology (optional)
    """
    api_key = os.getenv("NEWSAPI_API_KEY")
    if not api_key:
        return "News API key not found. Please set NEWSAPI_API_KEY in your .env file."

    # Construct the API request
    url = "https://newsapi.org/v2/top-headlines"
    params = {
        "apiKey": api_key,
        "language": "en",
        "pageSize": 5  # Limit to 5 articles for readability
    }

    # Add optional parameters if provided
    if query:
        params["q"] = query
    if category and category.lower() in ["business", "entertainment", "general", "health", "science", "sports", "technology"]:
        params["category"] = category.lower()
    elif not query:  # Default to general news if no query or category
        params["category"] = "general"

    try:
        response = requests.get(url, params=params)
        if response.status_code == 200:
            news_data = response.json()
            if news_data["totalResults"] == 0:
                # Try an alternative approach with everything endpoint for location-based searches
                return get_location_news(query)

            # Format the results
            result = f"Latest News {f'on {query}' if query else ''} {f'in {category}' if category else ''}:\n\n"
            for i, article in enumerate(news_data["articles"], 1):
                result += f"{i}. {article['title']}\n"
                result += f"   Source: {article['source']['name']}\n"
                result += f"   Published: {article['publishedAt']}\n"
                result += f"   Summary: {article['description'] if article['description'] else 'No description available'}\n"
                result += f"   URL: {article['url']}\n\n"

            return result
        else:
            return f"Error fetching news: {response.status_code}"
    except Exception as e:
        return f"Error processing news request: {str(e)}"

def get_location_news(location: str) -> str:
    """
    Get news for a specific location using the everything endpoint.
    This is better for location-based searches.
    """
    api_key = os.getenv("NEWSAPI_API_KEY")
    if not api_key:
        return "News API key not found. Please set NEWSAPI_API_KEY in your .env file."

    # Use the everything endpoint which is better for location searches
    url = "https://newsapi.org/v2/everything"
    params = {
        "apiKey": api_key,
        "q": location,  # Search for the location name
        "sortBy": "publishedAt",  # Sort by most recent
        "language": "en",
        "pageSize": 5
    }

    try:
        response = requests.get(url, params=params)
        if response.status_code == 200:
            news_data = response.json()

            if news_data["totalResults"] == 0:
                return f"No news found for location: {location}. Try a different search term or check back later."

            # Format the results
            result = f"Latest News related to {location}:\n\n"
            for i, article in enumerate(news_data["articles"], 1):
                result += f"{i}. {article['title']}\n"
                result += f"   Source: {article['source']['name']}\n"
                result += f"   Published: {article['publishedAt']}\n"
                result += f"   Summary: {article['description'] if article['description'] else 'No description available'}\n"
                result += f"   URL: {article['url']}\n\n"

            return result
        else:
            return f"Error fetching location news: {response.status_code}"
    except Exception as e:
        return f"Error processing location news request: {str(e)}"

# Create search tool
duckduckgo_search = DuckDuckGoSearchRun()

# Define the tools
tools = [
    Tool(
        name="Search",
        func=duckduckgo_search.run,
        description="Useful for searching the web for current information."
    ),
    Tool(
        name="Calculator",
        func=calculator,
        description="Useful for performing mathematical calculations. Input should be a mathematical expression."
    ),
    Tool(
        name="CurrentTime",
        func=get_current_time,
        description="Get the current date and time. No input is needed."
    ),
    Tool(
        name="LatestNews",
        func=get_latest_news,
        description="Get the latest news headlines. You can specify a search query and/or category (business, entertainment, health, science, sports, technology)."
    ),
    Tool(
        name="LocationNews",
        func=get_location_news,
        description="Get news for a specific location or city. Input should be the name of the location (e.g., 'Mumbai', 'New York')."
    )
]

# Create the agent prompt
prompt = ChatPromptTemplate.from_messages([
    ("system", """You are an intelligent assistant that helps users with their questions.
    You have access to tools that can search the web, get the latest news, perform calculations, and get the current time.
    Use these tools to provide helpful and accurate responses.

    When asked about general news or news categories, use the LatestNews tool.
    When asked about news in a specific location or city, use the LocationNews tool.

    Always think step by step and explain your reasoning clearly.
    """),
    MessagesPlaceholder(variable_name="chat_history"),
    ("human", "{input}"),
    MessagesPlaceholder(variable_name="agent_scratchpad")
])

# Create the agent
agent = create_openai_tools_agent(
    llm=llm,
    tools=tools,
    prompt=prompt
)

# Create the agent executor
agent_executor = AgentExecutor.from_agent_and_tools(
    agent=agent,
    tools=tools,
    verbose=True,
    handle_parsing_errors=True,
    max_iterations=5
)

# Initialize chat history
chat_history = []

# Function to process user input
def process_input(message):
    global chat_history
    # Run the agent
    response = agent_executor.invoke({
        "input": message,
        "chat_history": chat_history
    })
    # Update chat history
    chat_history.append(HumanMessage(content=message))
    chat_history.append(AIMessage(content=response["output"]))
    return response["output"]

# Create the Gradio interface
with gr.Blocks(title="AI Agent Dashboard") as demo:
    gr.Markdown("# 🤖 AI Agent Dashboard")
    gr.Markdown("Ask me anything! I can search the web, get the latest news, perform calculations, and more.")

    chatbot = gr.Chatbot(height=500)
    msg = gr.Textbox(label="Your question", placeholder="Ask me about the latest news, search the web, or do calculations...")
    clear = gr.Button("Clear conversation")

    def respond(message, chat_history):
        bot_message = process_input(message)
        chat_history.append((message, bot_message))
        return "", chat_history

    def clear_chat():
        global chat_history
        chat_history = []
        return None

    msg.submit(respond, [msg, chatbot], [msg, chatbot])
    clear.click(clear_chat, None, chatbot, queue=False)

if __name__ == "__main__":
    demo.launch(share=True)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

برنامه را برای دیدن داشبورد عامل AI با جادوی در زمان واقعی اجرا کنید.

python3 agent.py  
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شما باید بتوانید LocalHost خود را باز کنید و این را ببینید.

اخبار محلی

اطلاعات خبری از SF

کد کامل در اینجا موجود است.

نمای کلی از معماری عامل AI

این عامل با استفاده از یک معماری مدرن AI ساخته شده است که از مدل های بزرگ زبان (LLMS) با ابزارهای تخصصی استفاده می کند. الگوی طراحی اساسی از آنچه به عنوان معماری “عامل استفاده کننده ابزار” شناخته می شود ، دنبال می شود ، جایی که یک LLM به عنوان مغز عمل می کند که می تواند در مورد مشکلات استدلال کند و تصمیم بگیرد که از ابزارهای تخصصی برای انجام وظایف اصلی و فناوری ها استفاده می کند.

چارچوب: لانگچین

Langchain یک چارچوب منبع باز است که به طور خاص برای ساخت برنامه های کاربردی LLM طراحی شده است. این داربست را برای اتصال مدل های زبان به ابزارهای خارجی و منابع داده فراهم می کند.

مدل زبان: مدل GPT Openai

ما از GPT-4 استفاده کردیم که از تماس عملکرد پشتیبانی می کند. این به مدل اجازه می دهد تا تعیین کند که از کدام ابزار به روش ساختاری استفاده می کند.

نوع عامل: عامل OpenAi Tools Agent

ما عامل را با استفاده از الگوی Langchain's Create_Openai_Tools_Agent پیاده سازی کردیم. این الگوی قابلیت فراخوانی عملکرد OpenAI را برای انتخاب ابزار قابل اعتماد اعمال می کند.

رابط کاربری: Gradio

Gradio یک روش ساده برای ایجاد …

SingLestore به عنوان یک پایگاه داده بردار و برای تجزیه و تحلیل در زمان واقعی

برای افزایش پایداری داده ها و تجزیه و تحلیل در زمان واقعی ، SingLestore پایه و اساس عالی برای مقیاس گذاری نماینده AI اخبار شما فراهم می کند. به عنوان یک پایگاه داده SQL توزیع شده بهینه شده برای معاملات و تجزیه و تحلیل ، SingLestore می تواند تاریخ مکالمه ، ترجیحات کاربر و داده های خبری ذخیره شده را در حالی که امکان نمایش داده های رعد و برق را در مجموعه داده های بزرگ ذخیره می کند ، ذخیره کند. توانایی آن در رسیدگی به مصرف داده های در زمان واقعی ، آن را برای به روزرسانی مداوم فیدهای خبری مناسب می کند ، در حالی که سازگاری SQL آن ادغام آسان با پایگاه کد پایتون موجود شما را تضمین می کند. این ترکیب به نماینده شما اجازه می دهد تا زمینه را در جلسات حفظ کرده و تجزیه و تحلیل های پیشرفته را در مورد روندهای خبری و تعامل کاربر انجام دهد.

SingLestore دارای ادغام عالی Langchain است که می تواند حافظه و مدیریت داده های خبر شما را به میزان قابل توجهی بهبود بخشد.

مزایای اصلی افزودن SingLestore:

  • حافظه مداوم: تاریخ مکالمه را در جلسات ذخیره کنید.
  • جستجوی اخبار معنایی: مقالات مرتبط را با استفاده از جستجوی شباهت با هوش مصنوعی پیدا کنید.
  • تحلیلی در زمان واقعی: تجزیه و تحلیل مباحث گرایش و الگوهای خبری.
  • ذخیره سازی مقیاس پذیر: به طور موثر مقادیر زیادی از داده های خبری را ذخیره و بازیابی کنید.

SingLestore را به صورت رایگان امتحان کنید!

پس از ثبت نام در SingLestore ، یک فضای کاری و یک پایگاه داده ایجاد کنید.

فضای کاری و DB

سپس به “استودیوی داده” برویدبشر

استودیوی داده ها

یک نوت بوک جدید ایجاد کنیدبشر

نوت بوک ایجاد کنید

شروع به اضافه کردن کد گام به گامبشر

!pip install --upgrade "langchain>=0.2.0" "langchain-openai>=0.0.5" "langchain-community>=0.0.15"
!pip install --upgrade "singlestoredb>=1.0.0" "langchain-singlestoredb>=0.1.0"
!pip install --upgrade gradio requests python-dotenv
!pip install --upgrade sentence-transformers tiktoken
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

import os
import gradio as gr
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain.agents import create_openai_tools_agent, AgentExecutor
from langchain_core.tools import Tool
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import AIMessage, HumanMessage
from langchain_community.tools.ddg_search import DuckDuckGoSearchRun
from langchain_community.vectorstores import SingleStoreDB
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_core.documents import Document
from datetime import datetime
import requests
import json
import singlestoredb as s2
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

SINGLESTORE_HOST = "add your SingleStore "
SINGLESTORE_PORT = 3306
SINGLESTORE_USER = "add your username"
SINGLESTORE_PASSWORD = "add password"
SINGLESTORE_DATABASE = "add db name"
SINGLESTORE_TABLE = "ai_agent_knowledge"
OPENAI_API_KEY = "add your OpenAI API key"
NEWSAPI_API_KEY = "add your newsapi key"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در زیر مخزن کاملی که شما را در ادغام عملکرد پایگاه داده SingLestore راهنمایی می کند. این امر به نماینده شما امکان می دهد تا اطلاعات را از یک پایگاه داده بردار ذخیره و بازیابی کند ، و آن را برای مدیریت دانش و بازیابی قدرتمندتر می کند.

عوامل AI با SingleStore

با ادغام عملکرد پایگاه داده SingLestore ، عوامل هوش مصنوعی خود را تقویت کنید. این امر به نماینده شما امکان می دهد تا اطلاعات را از یک پایگاه داده بردار ذخیره و بازیابی کند ، و آن را برای مدیریت دانش و بازیابی قدرتمندتر می کند.

SingLestore را به صورت رایگان امتحان کنید!

پایان

ساختن یک خبرنامه AI در زمان واقعی ، قدرت عملی ترکیب مدل های بزرگ زبان با ابزارهای تخصصی و معماری متفکرانه را نشان می دهد. از طریق چارچوب Langchain ، ما سیستمی را ایجاد کرده ایم که می تواند زبان طبیعی را درک کند ، تصمیمات هوشمندانه ای در مورد استفاده از ابزار بگیرد و ضمن حفظ حریم خصوصی و کنترل کاربر ، اطلاعات ارزشمندی را در زمان واقعی ارائه دهد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا