• Бот в Discord, сортирующий по каналам информацию, данную на спец. канале без участия пользователя на основе ChatGPT, возможно ли это? Как реализовать?

    Да, такое возможно реализовать. Отлично для этой задачи подойдет Python + Langchain (Чтобы взаимодействовать с GPT)

    1) тебе нужно написать слушателя твоего чата (Который будет ловить сообщения из основного канала)

    2) Написать промпт для ZeroShot а лучше Few-shot классификации твоего текста.
    https://python.langchain.com/docs/modules/model_io...

    3) Каждое сообщение пропускаешь через цепочку которую написал в пункте 2 -> получаешь категорию / имя канала в который публиковать.

    4) Пишешь код который продублирует твое сообщение в нужные каналы.

    Ps. Понимаю что выглядит "Как нарисовать сову". Но без шуток - задача легко решаема ( вопрос ведь был в этом?)
    Ответ написан
    Комментировать
  • Как задать роль chatgpt langchain?

    1) Для такого вида запросов верни agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION. в initialize_agent
    2) Я так и не смог найти код CryptocurrencySearchAPIWrapper чтобы проверить работу и как там написан tool. Напиши где его взять - я может и помогу.
    3) Обновись до последней версии Langhain - была там беда с интерпритацией (запуском задачи) из промпта.

    Вот тебе рабочий пример, что тул заходит в функцию

    from langchain.agents import Tool, load_tools, initialize_agent, AgentType
    from langchain.memory import ConversationBufferMemory
    from langchain.chat_models import ChatOpenAI
    # from coinmarketcap_search import CryptocurrencySearchAPIWrapper
    
    
    llm = ChatOpenAI(
        temperature=1,
        streaming=False,
        max_tokens=900,
    )
    tools = load_tools(["llm-math"], llm=llm)
    
    
    def crypto_search(query):
      print('in tool')
      return 42
    
    
    tools.append(Tool.from_function(
        name="Crypto Currency Search",
        func=crypto_search,
        description="Use this tool when you need to answer questions about Cryptocurrency prices or altcoins prices "
                    "Input should be the Cryptocurrency coin name only or the ticker symbol"
    ))
    
    memory = ConversationBufferMemory(memory_key="chat_history")
    chain = initialize_agent(
        tools, llm,
        agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
        #agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
        verbose=True,
        memory=memory
    )
    
    def search_by_prompt(prompt: str) -> str:
        try:
            response = chain.run(prompt)
        except Exception as e:
            response = str(e)
            suffix = "Could not parse LLM output: `"
            if response.startswith(suffix):
                response = response.removeprefix(suffix).removesuffix("`")
    
        return response
    
    print(search_by_prompt('what is price of btc'))


    Вывод будет таким:

    > Entering new AgentExecutor chain...
    I should use the Crypto Currency Search tool to find the price of BTC.
    Action: Crypto Currency Search
    Action Input: BTCin tool
    
    Observation: 42
    Thought:I now know the price of BTC.
    Final Answer: The price of BTC is 42.
    
    > Finished chain.
    The price of BTC is 42.


    Так как на руках у меня нет кода CryptocurrencySearchAPIWrapper - не подскажу что там.

    Теперь просто нужно тебе разобраться с недрами CryptocurrencySearchAPIWrapper.run. внути по идее из запроса тебе нужно понять запрашиваемую монетку и зарядить запрос в Api. Далее вернуть в результат из тула. Дальше GPT сам красоту делает.
    Ответ написан
  • Как передать id видео через get?

    Ну, что бы получить все видосы, вы должны в print_r подставить $mov а не $art, ведь $art -это элемент массива, или ставить print_r($art['place_of_location']) внутри foreach.

    Чтобы передать id через js, нужно его вывести на странице с видео (или я чего то не понял), внутри атрибута, к примеру
    id_video
    . Затем логика в js такая:
    $('#ajax-book').click(function(){
        var $card=$(this).parents('.uk-card');
        var id_video = $card.find("<<< Тут класификатор блока, в которм появится id>>>"). attr('id_video');
        $.ajax({
            url: 'inc/ajax-book.php',
            method: 'GET',
            data: {
                'video_id': id_video
            },
            dataType : "json",
            success: function(data) {
                console.log(data);
            }
        });
    });


    Ну, и соответственно в php принимаешь как;
    $video_id = $_GET['video_id'];
    Ответ написан
    Комментировать
  • Как получить доступ к балансу в AdWords через API?

    Я делал это так, но не всегда правильный бюджет получается, может коллективным разумом получится разобраться?
    def get_amount():
            def get_budget_for_client():
                service = config.adwords_client.GetService('BudgetOrderService', version='v201702')
                selector = {
                    'fields': ['BudgetOrderName', 'SpendingLimit', 'TotalAdjustments'],
    
                }
                budgets = []
    
                page = service.get(selector)
    
                if 'entries' in page and page['entries']:
                    for payer in page['entries']:
                        budgets.append(round(int(payer['spendingLimit']['microAmount']) / 1000000, 2))
    
                all_budgets = sum(budgets)
                return all_budgets
    
            def get_spend_for_client():
    
                report_downloader = config.adwords_client.GetReportDownloader(version='v201702')
                report_query = "SELECT Cost FROM ACCOUNT_PERFORMANCE_REPORT "
    
                report = report_downloader.DownloadReportAsStringWithAwql(report_query, 'CSV', skip_report_header=True,
                                                                          skip_column_header=False,
                                                                          skip_report_summary=True,
                                                                          client_customer_id=customer_id)
                file = io.StringIO(report)
                reader = csv.DictReader(file, delimiter=',')
                
                for row in reader:
                    return round(float(row['Cost']) / 1000000, 2)
    
            all_moneys = get_budget_for_client()
            spend = get_spend_for_client()
    
            return round(all_moneys - spend)
    Ответ написан
  • Как настроить переменные окружения (NODE_PATH)?

    Попробуйте в командной строке (от админа)
    npm install node-static
    Ответ написан