Category: Microsoft
Category Archives: Microsoft
Build Your Dream With Autogen
The motivation – Is it possible to solve multi step tasks?
The short answer is Yes.
While large language models (LLMs) demonstrate remarkable capabilities in a variety of applications, such as language generation, understanding, and reasoning, they struggle to provide accurate answers when faced with complicated tasks.
According to this research (More agents is all you need), the performance of large language models (LLMs) scales with the number of agents instantiated. This method is orthogonal to existing complicated methods to further enhance LLMs, while the degree of enhancement is correlated to the task difficulty.
The Application
Now that we understand the motivation, and the business value of solving complicated, let’s build our dream team.
AutoGen provides a general conversation pattern called group chat, which involves more than two agents. The core idea of group chat is that all agents contribute to a single conversation thread and share the same context. This is useful for tasks that require collaboration among multiple agents.
Priya is the VP engineering of “Great Company”, the company leadership would like to build a solution for the legal domain based on LLMs, before writing a single line of code, Priya would like to research what are the available open sources on GitHub:
“What are the 5 leading GitHub repositories on llm for the legal domain?”
Executing it on Google, Bing or another search engine will not provide a structured and accurate result.
Let’s Build
We’ll build a system of agents using the Autogen library. The agents include a human admin, developer, planner, code executor, and a quality assurance agent. Each agent is configured with a name, a role, and specific behaviors or responsibilities.
Here’s the final output:
Install
(AutoGen requires Python>=3.8)
Set your API Endpoint
The config_list_from_json function loads a list of configurations from an environment variable or a json file.
from autogen.agentchat import ConversableAgent,UserProxyAgent,AssistantAgent,GroupChat,GroupChatManager
from autogen.oai.openai_utils import config_list_from_json
import os
from dotenv import load_dotenv
import warnings
warnings.filterwarnings(‘ignore’)
load_dotenv()
config_list_gpt4 = config_list_from_json(
“OAI_CONFIG_LIST”,
filter_dict={
“model”: [“gpt4o”],# in this example we used gpt4 omni
},
)
It first looks for environment variable “OAI_CONFIG_LIST” which needs to be a valid json string. If that variable is not found, it then looks for a json file named “OAI_CONFIG_LIST”. It filters the configs by models (you can filter by other keys as well).
You can set the value of config_list in any way you prefer.
Construct Agents
“cache_seed”: 42, # change the cache_seed for different trials
“temperature”: 0,
“config_list”: config_list_gpt4,
“timeout”: 120,
}
Let’s build our team, this code is setting up the agents:
user_proxy = UserProxyAgent(
name=”Admin”,
human_input_mode=”ALWAYS”,
system_message=”1. A human admin. 2. Interact with the team. 3. Plan execution needs to be approved by this Admin.”,
code_execution_config=False,
llm_config=gpt4_config,
description=”””Call this Agent if:
You need guidance.
The program is not working as expected.
You need api key
DO NOT CALL THIS AGENT IF:
You need to execute the code.”””,
)
# Assistant Agent – Developer
developer = AssistantAgent(
name=”Developer”,
llm_config=gpt4_config,
system_message=”””You are an AI developer. You follow an approved plan, follow these guidelines:
1. You write python/shell code to solve tasks.
2. Wrap the code in a code block that specifies the script type.
3. The user can’t modify your code. So do not suggest incomplete code which requires others to modify.
4. You should print the specific code you would like the executor to run.
5. Don’t include multiple code blocks in one response.
6. If you need to import libraries, use “`bash pip install module_name“`, please send a code block that installs these libraries and then send the script with the full implementation code
7. Check the execution result returned by the executor, If the result indicates there is an error, fix the error and output the code again
8. Do not show appreciation in your responses, say only what is necessary.
9. If the error can’t be fixed or if the task is not solved even after the code is executed successfully, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach to try.
“””,
description=”””Call this Agent if:
You need to write code.
DO NOT CALL THIS AGENT IF:
You need to execute the code.”””,
)
# Assistant Agent – Planner
planner = AssistantAgent(
name=”Planner”, #2. The research should be executed with code
system_message=”””You are an AI Planner, follow these guidelines:
1. Your plan should include 5 steps, you should provide a detailed plan to solve the task.
2. Post project review isn’t needed.
3. Revise the plan based on feedback from admin and quality_assurance.
4. The plan should include the various team members, explain which step is performed by whom, for instance: the Developer should write code, the Executor should execute code, important do not include the admin in the tasks e.g ask the admin to research.
5. Do not show appreciation in your responses, say only what is necessary.
6. The final message should include an accurate answer to the user request
“””,
llm_config=gpt4_config,
description=”””Call this Agent if:
You need to build a plan.
DO NOT CALL THIS AGENT IF:
You need to execute the code.”””,
)
# User Proxy Agent – Executor
executor = UserProxyAgent(
name=”Executor”,
system_message=”1. You are the code executer. 2. Execute the code written by the developer and report the result.3. you should read the developer request and execute the required code”,
human_input_mode=”NEVER”,
code_execution_config={
“last_n_messages”: 20,
“work_dir”: “dream”,
“use_docker”: True,
},
description=”””Call this Agent if:
You need to execute the code written by the developer.
You need to execute the last script.
You have an import issue.
DO NOT CALL THIS AGENT IF:
You need to modify code”””,
)
quality_assurance = AssistantAgent(
name=”Quality_assurance”,
system_message=”””You are an AI Quality Assurance. Follow these instructions:
1. Double check the plan,
2. if there’s a bug or error suggest a resolution
3. If the task is not solved, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach.”””,
llm_config=gpt4_config,
)
Group chat is a powerful conversation pattern, but it can be hard to control if the number of participating agents is large. AutoGen provides a way to constrain the selection of the next speaker by using the allowed_or_disallowed_speaker_transitions argument of the GroupChat class.
allowed_transitions = {
user_proxy: [ planner,quality_assurance],
planner: [ user_proxy, developer, quality_assurance],
developer: [executor,quality_assurance, user_proxy],
executor: [developer],
quality_assurance: [planner,developer,executor,user_proxy],
}
groupchat = GroupChat(
agents=[user_proxy, developer, planner, executor, quality_assurance],allowed_or_disallowed_speaker_transitions=allowed_transitions,
speaker_transitions_type=”allowed”, messages=[], max_round=30,send_introductions=True
)
manager = GroupChatManager(groupchat=groupchat, llm_config=gpt4_config, system_message=system_message_manager)
Sometimes it’s a bit complicated to understand the relationship between the entities, here we print a graph representation of the code:
import matplotlib.pyplot as plt
G = nx.DiGraph()
# Add nodes
G.add_nodes_from([agent.name for agent in groupchat.agents])
# Add edges
for key, value in allowed_transitions.items():
for agent in value:
G.add_edge(key.name, agent.name)
# Set the figure size
plt.figure(figsize=(12, 8))
# Visualize
pos = nx.spring_layout(G) # For consistent positioning
# Draw nodes and edges
nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_edges(G, pos)
# Draw labels below the nodes
label_pos = {k: [v[0], v[1] – 0.1] for k, v in pos.items()} # Shift labels below the nodes
nx.draw_networkx_labels(G, label_pos, verticalalignment=’top’, font_color=”darkgreen”)
# Adding margins
ax = plt.gca()
ax.margins(0.1) # Increase the margin value if needed
# Adding a dynamic title
total_transitions = sum(len(v) for v in allowed_transitions.values())
title = f’Agent Interactions: {len(groupchat.agents)} Agents, {total_transitions} Potential Transitions’
plt.title(title)
plt.show()
chat_result=user_proxy.initiate_chat(
manager,
message=task1
, clear_history=True
)
what are the 5 leading GitHub repositories on llm for the legal domain?
——————————————————————————–
Planner (to chat_manager):
To identify the 5 leading GitHub repositories on large language models (LLM) for the legal domain, we will follow a structured plan. Here is the detailed plan:
### Step 1: Define Search Criteria
**Team Member:** Planner
– Define the criteria for what constitutes a “leading” GitHub repository. This could include factors such as the number of stars, forks, recent activity, and relevance to the legal domain.
### Step 2: Conduct Initial Search
**Team Member:** Developer
– Use GitHub’s search functionality to find repositories related to LLMs in the legal domain.
– Apply filters based on the criteria defined in Step 1.
### Step 3: Compile and Analyze Data
**Team Member:** Developer
– Compile a list of the top 10 repositories based on the initial search.
– Analyze these repositories to ensure they meet the criteria and are relevant to the legal domain.
### Step 4: Narrow Down to Top 5
**Team Member:** Developer
– Narrow down the list from 10 to the top 5 repositories based on further analysis and comparison.
### Step 5: Verify and Finalize
**Team Member:** Quality Assurance
– Double-check the final list of 5 repositories to ensure they meet all the criteria and are indeed leading repositories in the legal domain.
– Provide a brief description of each repository and why it was selected.
### Final List of 5 Leading GitHub Repositories on LLM for the Legal Domain
1. **Repository Name:** [Link to Repository]
– **Description:** Brief description of the repository and its relevance to the legal domain.
2. **Repository Name:** [Link to Repository]
– **Description:** Brief description of the repository and its relevance to the legal domain.
3. **Repository Name:** [Link to Repository]
– **Description:** Brief description of the repository and its relevance to the legal domain.
4. **Repository Name:** [Link to Repository]
– **Description:** Brief description of the repository and its relevance to the legal domain.
5. **Repository Name:** [Link to Repository]
– **Description:** Brief description of the repository and its relevance to the legal domain.
This plan will ensure that we identify and verify the top 5 leading GitHub repositories on LLM for the legal domain.
*****************
You can find the full output in the GitHub repo
——————————————————————————–
Quality_assurance (to chat_manager):
### Final List of 5 Leading GitHub Repositories on LLM for the Legal Domain
1. **Repository Name:** [lexpredict-lexnlp](https://github.com/LexPredict/lexpredict-lexnlp)
– **Description:** LexNLP by LexPredict
– **Stars:** 676
– **Forks:** 174
2. **Repository Name:** [Blackstone](https://github.com/ICLRandD/Blackstone)
– **Description:** A spaCy pipeline and model for NLP on unstructured legal text.
– **Stars:** 632
– **Forks:** 100
3. **Repository Name:** [Legal-Text-Analytics](https://github.com/Liquid-Legal-Institute/Legal-Text-Analytics)
– **Description:** A list of selected resources, methods, and tools dedicated to Legal Text Analytics.
– **Stars:** 563
– **Forks:** 113
4. **Repository Name:** [2019Legal-AI-Challenge-Legal-Case-Element-Recognition-solution](https://github.com/wangxupeng/2019Legal-AI-Challenge-Legal-Case-Element-Recognition-solution)
– **Description:** Completed this competition in collaboration with Jiang Yan and Guan Shuicheng.
– **Stars:** 501
– **Forks:** 33
5. **Repository Name:** [DISC-LawLLM](https://github.com/FudanDISC/DISC-LawLLM)
– **Description:** DISC-LawLLM, an intelligent legal system utilizing large language models (LLMs) to provide a wide range of legal services.
– **Stars:** 445
– **Forks:** 45
### Verification and Finalization
**Quality Assurance Task:**
– **Double-check the final list:** Ensure that the repositories meet all the criteria and are indeed leading repositories in the legal domain.
– **Provide a brief description:** Each repository has been described briefly, highlighting its relevance to the legal domain.
The task is now complete, and the final list of leading GitHub repositories on LLM for the legal domain has been verified and finalized.
We have shown how to build a complex multi agent solution, this enhancement ensures that complex multi steps tasks can be solved with Autogen.
Now we can deploy this group to solve various business use cases like customer support, IT, finance and more.
Microsoft Tech Community – Latest Blogs –Read More
Bookings Offers Incorrect Times
Trying to set up a team page for Bookings via Teams.
I’ve set the times we’re available and they show up in the calendar view correctly, but when you go to the Booking Page itself, the wrong times are shown. I thought that perhaps it was a time zone thing in settings, but I’ve checked all of the time zones in all of my Office 365 apps and they are correct. Everything is set to Eastern Time.
Here is the calendar view. It is correct.
Here is the Page view. It is NOT correct.
This is how it is set up in the backend.
Trying to set up a team page for Bookings via Teams. I’ve set the times we’re available and they show up in the calendar view correctly, but when you go to the Booking Page itself, the wrong times are shown. I thought that perhaps it was a time zone thing in settings, but I’ve checked all of the time zones in all of my Office 365 apps and they are correct. Everything is set to Eastern Time.Here is the calendar view. It is correct.Here is the Page view. It is NOT correct. This is how it is set up in the backend. Read More
Access to Data Catalog’s free features
Hi,
I am exploring what is available in the free version of Microsoft Purview’s Data Catalog Solution.
I want access the below given free features that come with this account type, as mentioned here:
Azure assets in your data estate are available in the Microsoft Purview Data Catalog without any set up needed. The data catalog automatically records data schema so users can explore data sources before accessing them.Data owners can add information like description, classifications, and contacts to their assets to provide users a more complete picture of their data estate.
With current privileges,
I am not able to view data schema of any of the assets or the data sources.Edit any asset to add information even though I am the data owner of some azure databases and Fabric Items.I am not able to see metadata of the Fabric items that I see under browse section in Data Catalog.Below given image shows what all I can see in live view of a Fabric asset
Questions:
Do I need to be added to a data curator to have access to these features?What are the steps to get assigned as tenant admin, global admin or Microsoft Purview admin so I can create domains/collections>assign myself to a data curator role?Do I need to register and scan data sources in order access metadata in data catalog free solution?
Please let me know if I am missing any steps in order to access the features of the Data catalog that comes in free version and if I need to have additional permissions in order to gain access to the same.
Hi, I am exploring what is available in the free version of Microsoft Purview’s Data Catalog Solution. I want access the below given free features that come with this account type, as mentioned here:Azure assets in your data estate are available in the Microsoft Purview Data Catalog without any set up needed. The data catalog automatically records data schema so users can explore data sources before accessing them.Data owners can add information like description, classifications, and contacts to their assets to provide users a more complete picture of their data estate. With current privileges,I am not able to view data schema of any of the assets or the data sources.Edit any asset to add information even though I am the data owner of some azure databases and Fabric Items.I am not able to see metadata of the Fabric items that I see under browse section in Data Catalog.Below given image shows what all I can see in live view of a Fabric asset Questions:Do I need to be added to a data curator to have access to these features?What are the steps to get assigned as tenant admin, global admin or Microsoft Purview admin so I can create domains/collections>assign myself to a data curator role?Do I need to register and scan data sources in order access metadata in data catalog free solution?Please let me know if I am missing any steps in order to access the features of the Data catalog that comes in free version and if I need to have additional permissions in order to gain access to the same. Read More
New Blog | Monthly news – June 2024
By Yura Lee
Microsoft Defender for Cloud
Monthly news
June 2024 Edition
This is our monthly “What’s new” blog post, summarizing product updates and various new assets we released over the past month. In this edition, we are looking at all the goodness from May 2024.
Read the full post here: Monthly news – June 2024
By Yura Lee
Microsoft Defender for Cloud
Monthly news
June 2024 Edition
This is our monthly “What’s new” blog post, summarizing product updates and various new assets we released over the past month. In this edition, we are looking at all the goodness from May 2024.
Read the full post here: Monthly news – June 2024 Read More
Apoio na recuperação de nossa conta no Linkedin – LBV Brasil
Prezada equipe Microsoft,
Esperamos que esta mensagem os encontre bem. Estamos enfrentando um desafio relacionado ao acesso à nossa conta corporativa do LinkedIn e gostaríamos de solicitar apoio de vocês. No processo de retomada do uso da plataforma, percebemos que não temos registro do e-mail utilizado para criar a conta. Nossa equipe de Recursos Humanos seguiu as instruções fornecidas no portal de ajuda do LinkedIn, mas, infelizmente, não conseguimos restabelecer o acesso https://www.linkedin.com/help/linkedin/answer/a1339719?hcppcid=search .
Seria possível auxiliar-nos a identificar o e-mail associado à nossa conta oficial? Tentamos entrar em contato direto com o suporte do LinkedIn, mas não encontramos um canal adequado para tratar deste assunto.
Segue o link para a conta oficial que necessita de atenção: Conta Oficial da Legião da Boa Vontade no LinkedIn. https://www.linkedin.com/company/legiao-lbv/mycompany/
Agradecemos antecipadamente por qualquer orientação ou suporte que possam fornecer.
Atenciosamente,
Pedro Paulo – email address removed for privacy reasons
Responsável pelas aplicações Microsoft na LBV
Prezada equipe Microsoft,Esperamos que esta mensagem os encontre bem. Estamos enfrentando um desafio relacionado ao acesso à nossa conta corporativa do LinkedIn e gostaríamos de solicitar apoio de vocês. No processo de retomada do uso da plataforma, percebemos que não temos registro do e-mail utilizado para criar a conta. Nossa equipe de Recursos Humanos seguiu as instruções fornecidas no portal de ajuda do LinkedIn, mas, infelizmente, não conseguimos restabelecer o acesso https://www.linkedin.com/help/linkedin/answer/a1339719?hcppcid=search .Seria possível auxiliar-nos a identificar o e-mail associado à nossa conta oficial? Tentamos entrar em contato direto com o suporte do LinkedIn, mas não encontramos um canal adequado para tratar deste assunto.Segue o link para a conta oficial que necessita de atenção: Conta Oficial da Legião da Boa Vontade no LinkedIn. https://www.linkedin.com/company/legiao-lbv/mycompany/Agradecemos antecipadamente por qualquer orientação ou suporte que possam fornecer.Atenciosamente, Pedro Paulo – email address removed for privacy reasonsResponsável pelas aplicações Microsoft na LBV Read More
Azure Logic Apps PeekLock caching and Service Bus queue Lockduration
This article is about optimizations when integrating the “When messages are available in a queue (peek-lock)” Logic App trigger with an Azure Service bus queue.
Under high load scenarios or business flows takes from 1 to 5 minutes, stateful logic apps which are triggered by “When messages are available in a queue (peek-lock)” trigger, may need some adjustments for optimizing performance and avoiding degradation issues like the below mentioned:
{
“code”: “ServiceProviderActionFailed”,
“message”: “The service provider action failed with error code ‘BadRequest’ and error message ‘The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue. For more information please see https://aka.ms/ServiceBusExceptions . Reference:XXXXXXX, TrackingId:xxxxxxxxxxxx, SystemTracker:gi::xxxxxxxxxxxxx:amqps://xxxxxxxxx.servicebus.windows.net/-source(address:/queue,filter:[]), Timestamp:2024-05-30T00:48:25 (MessageLockLost). For troubleshooting information, see https://aka.ms/azsdk/net/servicebus/exceptions/troubleshoot.’.”
}
This may be due the several reasons. Let’s explore 2 of them and understand how they can be solved.
Lock duration (lockduration for more details) property of the service bus queue is set to 1 minute by default. However, our business flow can take longer. To solve this problem, we can increase it up to 5 minutes.
There are various ways to increase this value.
a. Existing queue through the Azure portal:
Go to the Service Bus namespace >> Entities >> Queues >> Your Queue >> Click “change” in the Message lock duration property and enter the new value and click “OK”
b. Existing queue through Azure PowerShell: we are not going deep into this. Please refer to the following article:
How to set LockDuration on an Azure ServiceBus queue with PowerShell | John Billiris (wordpress.com)
c. When creating a new queue:
Go to the Service Bus namespace >> Entities >> Queues >> “+ Queue” and set the lock duration to a value between 1 to 5 minutes. This will vary depending on your environmental requirements.
2. Other possible root cause could be that our logic app is reaching the PeekLock cache threshold which by default is 5000. This cache expiry duration is 30 minutes so this setting should be set around the number of messages your workflow expects in that time.
It is important to be aware that once the message is completed, the entry is removed from cache so typically it will not hit near the number of messages expected in 30 minutes.
Fixing it is easy, just set the ServiceProviders.ServiceBus.PeekLockTriggerContextCache.CacheCapacity appsetting to a bigger value and reboot the logic app. However, be aware that this will have a memory overhead in our Standard Plan (WS1/WS2/WS3) or ASE so it is important to be accurate when setting this value and have a realistic approach of the environment loads. It is a best practice to testing in non-productive environments before.
This is how it can be done by Azure Portal:
Go to Azure Portal >> Your Logic App >> Settings >> Environment Variables >> App Settings and then add ServiceProviders.ServiceBus.PeekLockTriggerContextCache.CacheCapacity = #yournewvalue (10000 for this case)
Microsoft Tech Community – Latest Blogs –Read More
Exchange on-prem decomm sript – Add-PermissionForEMT.ps1 parameter question
I want to decomm the last Exchange Server we have on prem, my only hang up at the moment is that the script you run (Add-PermissionForEMT.ps1) only has syntax for specifying *ONE* OU to set ACLs on Exchange objects.
Our AD team doesn’t want to alter the ACLs on all OUs, but we have multiple OUs at the root level that have Exchange objects in them… so I need to specify multiple OUs and containers. Does anyone know the syntax for multiple OUs? here’s the example in the script itself…
# Usage: Add-PermissionForEMT.ps1 -RecipientOUs ‘CN=OU1,DC=contoso,DC=com’
possibly this?
‘CN=OU1,DC=contoso,DC=com’;’OU=MyUsers,DC=contoso,DC=com’
or
‘CN=OU1,DC=contoso,DC=com;CN=MyUsers,DC=contoso,DC=com’
My main concern about running the script is that it runs the first part and then craps out when it goes to set the ACLs on these OUs. Don’t really want to run it multiple times…
I want to decomm the last Exchange Server we have on prem, my only hang up at the moment is that the script you run (Add-PermissionForEMT.ps1) only has syntax for specifying *ONE* OU to set ACLs on Exchange objects. Our AD team doesn’t want to alter the ACLs on all OUs, but we have multiple OUs at the root level that have Exchange objects in them… so I need to specify multiple OUs and containers. Does anyone know the syntax for multiple OUs? here’s the example in the script itself… # Usage: Add-PermissionForEMT.ps1 -RecipientOUs ‘CN=OU1,DC=contoso,DC=com’ possibly this?’CN=OU1,DC=contoso,DC=com’;’OU=MyUsers,DC=contoso,DC=com’or’CN=OU1,DC=contoso,DC=com;CN=MyUsers,DC=contoso,DC=com’ My main concern about running the script is that it runs the first part and then craps out when it goes to set the ACLs on these OUs. Don’t really want to run it multiple times… Read More
Yeni Bit.get öneri kodu: qp29 (yeni kayıt 2024)
2024 yılının en iyi B I T GE T referans kodu “qp29”dur. İşlemlerde %30 indirim elde etmek için bu kodu kullanın. Ek olarak, “qp29” promosyon kodunu kullanarak B I T GE T’ye kaydolan yeni kullanıcılar, 5005 USDT’ye kadar özel bir ödül kazanabilirler.
B I T GE T referans kodunun avantajları qp29
B I T GE T referans kodu qp29, cazip ödüller kazanırken işlem ücretlerinden tasarruf etmenin harika bir yolunu sunar. Bu kodu girerek işlem ücretlerinizde kalıcı olarak %30 indirim alacaksınız. Ayrıca kişisel referans kodunuzu arkadaşlarınızla paylaşırsanız, onların işlem ücretlerinden %50 bonus alabilirsiniz. Platforma yeni kullanıcılar getirirken gelirinizi artırmak için bu fırsattan yararlanın.
2024 için en iyi B I T GE T referans kodu
2024 için önerilen B I T GE T referans kodu qp29’dur. Bu kodla kayıt olduğunuzda 5005 USDT’ye kadar bonus kazanabilirsiniz. %50 komisyon kazanmak için bu kodu arkadaşlarınızla paylaşın ve 5005 USDT’ye kadar maksimum kayıt bonusu elde etmenize yardımcı olun. Bu, başkalarını katılmaya teşvik ederken ek avantajlarla ticaret deneyiminizi geliştirmenin harika bir yoludur.
B I T GE T yönlendirme kodu nasıl kullanılır?
B I T GE T yönlendirme kodu özellikle platforma henüz kaydolmamış yeni kullanıcılar içindir. Kodu kullanmak için şu adımları izleyin:
B I T GE T web sitesini ziyaret edin ve “Oturum Aç”a tıklayın.
Kullanıcı bilgilerinizi girin ve KYC ve AML prosedürlerini uygulayın.
Yönlendirme kodunuz istendiğinde qp29 girin.
Kayıt işlemini tamamlayın ve gerekli doğrulamaları tamamlayın.
Tüm koşullar yerine getirildiğinde hoş geldin bonusunuzu hemen alacaksınız.
Neden B I T GE T yönlendirme kodunu kullanmalıyım?
Kalıcı indirim: qp29 koduyla tüm işlem komisyonlarında otomatik olarak %30 indirim alırsınız.
Cömert hoş geldin bonusu: Yeni kullanıcılar 5005 USDT’ye kadar alabilir.
Ek Kazançlar: Kodunuzu paylaşın ve %50 komisyon kazanın.
Bu fırsattan yararlanın ve mevcut B I T GE T referans kodu qp29 ile avantajlarınızı güvence altına alın! 5005 USDT’ye kadar kazanın ve işlem ücretlerinizde kalıcı indirimlerden yararlanın.
2024 yılının en iyi B I T GE T referans kodu “qp29”dur. İşlemlerde %30 indirim elde etmek için bu kodu kullanın. Ek olarak, “qp29” promosyon kodunu kullanarak B I T GE T’ye kaydolan yeni kullanıcılar, 5005 USDT’ye kadar özel bir ödül kazanabilirler.B I T GE T referans kodunun avantajları qp29B I T GE T referans kodu qp29, cazip ödüller kazanırken işlem ücretlerinden tasarruf etmenin harika bir yolunu sunar. Bu kodu girerek işlem ücretlerinizde kalıcı olarak %30 indirim alacaksınız. Ayrıca kişisel referans kodunuzu arkadaşlarınızla paylaşırsanız, onların işlem ücretlerinden %50 bonus alabilirsiniz. Platforma yeni kullanıcılar getirirken gelirinizi artırmak için bu fırsattan yararlanın.2024 için en iyi B I T GE T referans kodu2024 için önerilen B I T GE T referans kodu qp29’dur. Bu kodla kayıt olduğunuzda 5005 USDT’ye kadar bonus kazanabilirsiniz. %50 komisyon kazanmak için bu kodu arkadaşlarınızla paylaşın ve 5005 USDT’ye kadar maksimum kayıt bonusu elde etmenize yardımcı olun. Bu, başkalarını katılmaya teşvik ederken ek avantajlarla ticaret deneyiminizi geliştirmenin harika bir yoludur.B I T GE T yönlendirme kodu nasıl kullanılır?B I T GE T yönlendirme kodu özellikle platforma henüz kaydolmamış yeni kullanıcılar içindir. Kodu kullanmak için şu adımları izleyin:B I T GE T web sitesini ziyaret edin ve “Oturum Aç”a tıklayın.Kullanıcı bilgilerinizi girin ve KYC ve AML prosedürlerini uygulayın.Yönlendirme kodunuz istendiğinde qp29 girin.Kayıt işlemini tamamlayın ve gerekli doğrulamaları tamamlayın.Tüm koşullar yerine getirildiğinde hoş geldin bonusunuzu hemen alacaksınız.Neden B I T GE T yönlendirme kodunu kullanmalıyım?Kalıcı indirim: qp29 koduyla tüm işlem komisyonlarında otomatik olarak %30 indirim alırsınız.Cömert hoş geldin bonusu: Yeni kullanıcılar 5005 USDT’ye kadar alabilir.Ek Kazançlar: Kodunuzu paylaşın ve %50 komisyon kazanın.Bu fırsattan yararlanın ve mevcut B I T GE T referans kodu qp29 ile avantajlarınızı güvence altına alın! 5005 USDT’ye kadar kazanın ve işlem ücretlerinizde kalıcı indirimlerden yararlanın. Read More
All tabs are reloaded
When I close the browser and restart, all tabs will load simultaneously, which will get stuck for a while. Can I keep them in sleep mode when I restart, as long as the current tab is active
When I close the browser and restart, all tabs will load simultaneously, which will get stuck for a while. Can I keep them in sleep mode when I restart, as long as the current tab is active Read More
Super drag always opens at the end of all tabs
As the question suggests, can you add a setting for the opening position, such as I only want to open it next to the current tab
As the question suggests, can you add a setting for the opening position, such as I only want to open it next to the current tab Read More
Bookings personal page shows incorrect times, not my “regular working hours” from settings
I’m trying to have my personal bookings page only show availabilities to book a meeting within my “regular working hours” as I have set in the settings:
For each meeting type, I have explicitly set the availability to correspond to the previously set “regular working hours”:
However, the options to book on my personal page show availability for times that are not part of the set hours:
Why are my available booking slots not corresponding to my set hours?
I’m trying to have my personal bookings page only show availabilities to book a meeting within my “regular working hours” as I have set in the settings:For each meeting type, I have explicitly set the availability to correspond to the previously set “regular working hours”:However, the options to book on my personal page show availability for times that are not part of the set hours:Why are my available booking slots not corresponding to my set hours? Read More
Konica Universal Print App
Looking for others that are using this app. It seems the app crashes weekly on various models (C300i with latest firmware). We can resume printing by logging in with admin access and re-enabling the app.
We also see other issues like jobs printing (output produced) but not going to a completed state. These have been sitting like this for about 30 minutes. When this happens, we have to reboot the printer.
We got nowhere working with our local support vendor. We’re trying to get national support involved.
Looking for others that are using this app. It seems the app crashes weekly on various models (C300i with latest firmware). We can resume printing by logging in with admin access and re-enabling the app.We also see other issues like jobs printing (output produced) but not going to a completed state. These have been sitting like this for about 30 minutes. When this happens, we have to reboot the printer.We got nowhere working with our local support vendor. We’re trying to get national support involved. Read More
Mute and unmute yourself from Windows taskbar in Microsoft Teams
Hello, Microsoft 365 Insiders,
Exciting news for all users of the new Microsoft Teams experience! We’ve introduced a new feature that lets you mute and unmute yourself straight from the Windows taskbar—streamlining your virtual meetings like never before. Your feedback is our command, and we’re thrilled to deliver this update in the new Teams.
Read our latest blog post to learn all about it: Mute and unmute yourself from Windows taskbar in Microsoft Teams
Thanks!
Perry Sjogren
Microsoft 365 Insider Community Manager
Become a Microsoft 365 Insider and gain exclusive access to new features and help shape the future of Microsoft 365. Join Now: Windows | Mac | iOS | Android
Hello, Microsoft 365 Insiders,
Exciting news for all users of the new Microsoft Teams experience! We’ve introduced a new feature that lets you mute and unmute yourself straight from the Windows taskbar—streamlining your virtual meetings like never before. Your feedback is our command, and we’re thrilled to deliver this update in the new Teams.
Read our latest blog post to learn all about it: Mute and unmute yourself from Windows taskbar in Microsoft Teams
Thanks!
Perry Sjogren
Microsoft 365 Insider Community Manager
Become a Microsoft 365 Insider and gain exclusive access to new features and help shape the future of Microsoft 365. Join Now: Windows | Mac | iOS | Android Read More
MEDIAN column of AVERAGEIFS and #DIV/0!
I’m a little confused on this.
I have an array of data that was generated by conditional “AVERAGEIFS” with locations by row and differing conditions by column. The data is pulled from a different page.
=AVERAGEIFS(Data!$AL:$AL,Data!$A:$A,”FG-*”,Data!$F:$F,”CRITERIA1″,Data!AL:AL,”<100″,Data!AL:AL,”>0″,Data!$G:$G,”CRITERIA2″)
This part works great
I’m trying to get basic statistics on each column.
Not every location has the conditions so I have #DIV/0! errors mixed through the data.
I am trying to get the median of the column. (and am hoping STDEV functions the same way)
Despite what MS says… =MEDIAN(C4:C88) just gives me a #DIV/0! error.
I’ve tried multiple IF functions but it seems that having the criteria data in the same column as the range for MEDIA is causing issues.
Any ideas?
Thanks
I’m a little confused on this. I have an array of data that was generated by conditional “AVERAGEIFS” with locations by row and differing conditions by column. The data is pulled from a different page. =AVERAGEIFS(Data!$AL:$AL,Data!$A:$A,”FG-*”,Data!$F:$F,”CRITERIA1″,Data!AL:AL,”<100″,Data!AL:AL,”>0″,Data!$G:$G,”CRITERIA2″)This part works great I’m trying to get basic statistics on each column. Not every location has the conditions so I have #DIV/0! errors mixed through the data.I am trying to get the median of the column. (and am hoping STDEV functions the same way)Despite what MS says… =MEDIAN(C4:C88) just gives me a #DIV/0! error. I’ve tried multiple IF functions but it seems that having the criteria data in the same column as the range for MEDIA is causing issues. Any ideas? Thanks Read More
Ny Bit.get-anbefalingskode: qp29 (ny registrering 2024)
Ny Bit.get-anbefalingskode: qp29 (ny registrering 2024)
Den beste B I T GE T-henvisningskoden for 2024 er “qp29”. Bruk denne koden for å få 30 % rabatt på handler. I tillegg kan nye brukere som registrerer seg på B I T GE T ved å bruke kampanjekoden “qp29” sikre seg en eksklusiv belønning på opptil 5005 USDT.
Fordeler med B I T GE T henvisningskode qp29
B I T GE T henvisningskode qp29 tilbyr en flott måte å spare på handelsgebyrer samtidig som du tjener attraktive belønninger. Ved å taste inn denne koden vil du motta en permanent 30% rabatt på handelsgebyrene dine. I tillegg, hvis du deler din personlige henvisningskode med venner, kan du motta en 50 % bonus på handelsgebyrene deres. Benytt deg av denne muligheten til å øke inntektene dine samtidig som du får nye brukere til plattformen.
Den beste B I T GE T-henvisningskoden for 2024
Den anbefalte B I T GE T-henvisningskoden for 2024 er qp29. Når du registrerer deg med denne koden kan du få opptil 5005 USDT som en bonus. Del denne koden med venner for å tjene 50 % provisjon, noe som hjelper deg med å sikre en maksimal registreringsbonus på opptil 5005 USDT. Dette er en fin måte å forbedre handelsopplevelsen din med tilleggsfordeler samtidig som du oppmuntrer andre til å delta.
Slik bruker du B I T GE T henvisningskoden
B I T GE T-henvisningskoden er spesifikt for nye brukere som ennå ikke har registrert seg på plattformen. Følg disse trinnene for å bruke koden:
Besøk B I T GE T-nettstedet og klikk “Logg på”.
Skriv inn brukerdetaljene dine og gå gjennom KYC- og AML-prosedyrene.
Når du blir bedt om din henvisningskode, skriv inn qp29.
Fullfør registreringsprosessen og fullfør eventuelle nødvendige verifikasjoner.
Når alle betingelsene er oppfylt, vil du umiddelbart motta din velkomstbonus.
Hvorfor bruke B I T GE T henvisningskode?
Permanent rabatt: Med koden qp29 får du automatisk 30 % rabatt på alle handelsprovisjoner.
Generøs velkomstbonus: Nye brukere kan motta opptil 5005 USDT.
Ytterligere inntekter: Del koden din og tjen 50 % provisjon.
Benytt deg av denne muligheten og sikre dine fordeler med den gjeldende B I T GE T henvisningskoden qp29! Motta opptil 5005 USDT og dra nytte av permanente rabatter på handelsgebyrene dine.
Ny Bit.get-anbefalingskode: qp29 (ny registrering 2024)Den beste B I T GE T-henvisningskoden for 2024 er “qp29”. Bruk denne koden for å få 30 % rabatt på handler. I tillegg kan nye brukere som registrerer seg på B I T GE T ved å bruke kampanjekoden “qp29” sikre seg en eksklusiv belønning på opptil 5005 USDT.Fordeler med B I T GE T henvisningskode qp29B I T GE T henvisningskode qp29 tilbyr en flott måte å spare på handelsgebyrer samtidig som du tjener attraktive belønninger. Ved å taste inn denne koden vil du motta en permanent 30% rabatt på handelsgebyrene dine. I tillegg, hvis du deler din personlige henvisningskode med venner, kan du motta en 50 % bonus på handelsgebyrene deres. Benytt deg av denne muligheten til å øke inntektene dine samtidig som du får nye brukere til plattformen.Den beste B I T GE T-henvisningskoden for 2024Den anbefalte B I T GE T-henvisningskoden for 2024 er qp29. Når du registrerer deg med denne koden kan du få opptil 5005 USDT som en bonus. Del denne koden med venner for å tjene 50 % provisjon, noe som hjelper deg med å sikre en maksimal registreringsbonus på opptil 5005 USDT. Dette er en fin måte å forbedre handelsopplevelsen din med tilleggsfordeler samtidig som du oppmuntrer andre til å delta.Slik bruker du B I T GE T henvisningskodenB I T GE T-henvisningskoden er spesifikt for nye brukere som ennå ikke har registrert seg på plattformen. Følg disse trinnene for å bruke koden:Besøk B I T GE T-nettstedet og klikk “Logg på”.Skriv inn brukerdetaljene dine og gå gjennom KYC- og AML-prosedyrene.Når du blir bedt om din henvisningskode, skriv inn qp29.Fullfør registreringsprosessen og fullfør eventuelle nødvendige verifikasjoner.Når alle betingelsene er oppfylt, vil du umiddelbart motta din velkomstbonus.Hvorfor bruke B I T GE T henvisningskode?Permanent rabatt: Med koden qp29 får du automatisk 30 % rabatt på alle handelsprovisjoner.Generøs velkomstbonus: Nye brukere kan motta opptil 5005 USDT.Ytterligere inntekter: Del koden din og tjen 50 % provisjon.Benytt deg av denne muligheten og sikre dine fordeler med den gjeldende B I T GE T henvisningskoden qp29! Motta opptil 5005 USDT og dra nytte av permanente rabatter på handelsgebyrene dine. Read More
S mode not turning off
Hi, I just got a new computer running windows 11 and I can’t turn off S mode. every time I try it brings up “something happened and we couldn’t start the upgrade.” I can’t find anything online about it except for one video that has you open up cmd and /.
Hi, I just got a new computer running windows 11 and I can’t turn off S mode. every time I try it brings up “something happened and we couldn’t start the upgrade.” I can’t find anything online about it except for one video that has you open up cmd and /.photo 1 Read More
Act now: Updated benefits in partner-led offerings to land the adoption of Azure
Azure Migrate and Modernize and Azure Innovate are two comprehensive offerings built to work together and enable simpler adoption of Azure—the foundation of the Microsoft Cloud. These offerings provide software and services partners the critical opportunity to support customer organizations from cloud migration to innovation, with Microsoft guidance, enablement, and funding to deliver expert value and win more business.
What’s new as of April 1, 2024:
Expanded eligibility for partners who build software: Azure Innovate has expanded eligibility for ISVs meeting specific performance criteria (details here). Use Azure Innovate to infuse AI into solutions, advance analytics capabilities, and help to build custom cloud-native applications. Accelerate your digital transformation and deliver innovation projects that drive consistent execution and customer experiences, increasing demand, pipeline, and consumption of AI and analytics projects.
For partners providing services, Azure Migrate and Modernize partner-led introduced an additional incentive: As your customer’s trusted partner, you can give them a modern security solution built for the cloud, and now, earn even more with every migration. Specialized partners can earn an additional incentive specifically for Infrastructure & Database Migration engagements that include Microsoft Defender for Cloud consumption (15% extra funding when compared to standard Infra/DB engagements. Migrations are the perfect opportunity to modernize your customer’s security and compliance with the security platform integrated into Azure and built to span on prem and multi-cloud environments. Defender for Cloud enables you to save costs by consolidating tools, improve visibility across on prem and multicloud systems, and ensure compliance across all workloads.
For a limited time: Azure Innovate is open to Azure specialized partners: Any Azure Migrate and Modernize or Azure Innovate eligible specialization (with the exception of DevOps for GitHub) can unlock access to Azure Innovate for analytics and AI apps projects and receive funding. Partners can nominate new engagements now through June 30, 2024, projects do not have to be completed in fiscal year ‘24. July 1st onwards, this temporary exception will expire and nominations to Azure Innovate will once again require the corresponding specialization.
Accelerate deals, maximize earnings, and activate across more scenarios with expert guidance, self-serve tooling, and rapid approval workflows – so you can deliver better customer experiences.
Get started
Microsoft Tech Community – Latest Blogs –Read More
Migrating OCR Enhancement from GPT-4 Turbo Vision Preview to GPT-4 Turbo GA
The introduction of Optical Character Recognition (OCR) enhancement as a component of the GPT-4 Turbo Vision Preview was aimed at generating higher-quality responses for dense texts, transformed images, and number-heavy financial documents. Although, the recent announcement regarding the GPT-4 Turbo 2024-04-09 General Availability (GA) model indicated that the OCR enhancement is not included in this GA version. This blog post delves into the details of how OCR enhancement functions, the additional system prompts used for OCR enhancement, and provides a code snippet that demonstrates how to replicate the OCR enhancement behavior in the GPT-4 Turbo 2024-04-09 GA model by modifying the input prompt.
How OCR enhancement works
OCR enhancement modifies input messages before sending them to the GPT-4 Vision model using the following steps:
Find the user prompt message that contains an image.
Call the OCR API for this image and obtain the OCR text.
Add the OCR text as additional content to the user prompt message.
Add an additional system prompt message to instruct the model on how to leverage the OCR text to improve the accuracy of the result.
Why OCR enhancement is not supported in GA
Although OCR enhancement functionality provides simplicity by orchestrating OCR API call and prompt modification, it lacks customization of OCR technology and prompt instructions. Running the OCR enhancement process manually provides the following benefits:
Flexibility to choose a different version of OCR (i.e., documents with complex layout and table may benefit from markdown support instead of using plain text).
Flexibility to modify system instructions how OCR text is leveraged by GPT model (i.e., based on document type/quality/etc, leverage OCR text for numbers extraction but rely on GPT vision for signature detection, etc).
Agility to run OCR enhancement for prompt with multiple images (i.e., multi-page documents, comparison scenario, etc). Preview API only supports OCR enhancement for prompts with 1 image.
Running OCR enhancement manually
The goal of the code sample is to illustrate how OCR enhancement can be done manually. It creates two sample GPT payloads:
The first payload is with OCR enhancement enabled.
The second payload is identical to the first one but with 2 additional messages with OCR instructions, added the same way as OCR enhancement is doing for Preview model in Azure OpenAI service backend.
Prerequisites
An Azure OpenAI resource(s) with deployments of GPT-4 Turbo Vision Preview and GPT-4 Turbo 2024-04-09 GA models.
A Document Intelligence resource to call OCR API.
Install Document Intelligence Python SDK:
pip install azure-ai-documentintelligence
Setup environment variables
Create and assign environment variables for resource endpoints and API keys and load them in Python. Also, provide deployment names for both GPT models by replacing ‘<your-deployment-name>’ strings.
import os
# GPT-4 Turbo Vision Preview model
GPT4V_PREVIEW_ENDPOINT = os.getenv(“AZURE_GPT4V_PREVIEW_ENDPOINT”)
GPT4V_PREVIEW_KEY = os.getenv(“AZURE_GPT4V_PREVIEW_KEY”)
GPT4V_PREVIEW_DEPLOYMENT = ‘<your-deployment-name>’
# GPT-4 Turbo 2024-04-09 General Availability (GA) model
GPT4_GA_ENDPOINT = os.getenv(“AZURE_GPT4_GA_ENDPOINT”)
GPT4_GA_KEY = os.getenv(“AZURE_GPT4_GA_KEY”)
GPT4_GA_DEPLOYMENT = ‘<your-deployment-name>’
# Azure Document Intelligence API
DI_ENDPOINT = os.getenv(“AZURE_DI_ENDPOINT”)
DI_KEY = os.getenv(“AZURE_DI_KEY”)
Sample GPT payload
Python code below creates sample Json payload for GPT-4 Turbo Vision Preview API with OCR enhancement enabled. It uses a sample image of Japanese receipt as input and asks to extract Total from the receipt. This receipt is selected because without OCR enhancement GPT-4 Turbo Vision gives wrong answer – 5000, but with OCR enhancement answer is correct – 4500:
import requests
import base64
# Sample image data
IMAGE_BYTES = requests.get(“https://documentintelligence.ai.azure.com/documents/samples/prebuilt/receipt-japanese.jpg”).content
encoded_image = base64.b64encode(IMAGE_BYTES).decode(‘ascii’)
payload_sample = {
“messages”: [
{
“role”: “system”,
“content”: [
{
“type”: “text”,
“text”: “You are AI assistance to help extract information.”
}
]
},
{
“role”: “user”,
“content”: [
{
“type”: “image_url”,
“image_url”: {
“url”: “data:” + “image/jpeg;base64,” + encoded_image
}
},
{
“type”: “text”,
“text”: “Receipt Total as number. Just the number, no currency symbol or additional text.”
}
]
}
],
“temperature”: 0.0, “max_tokens”: 1000
}
Run OCR using Azure Document Intelligence
Define the function which calls Document Intelligence OCR API for the image and returns OCR content:
from azure.ai.documentintelligence import DocumentIntelligenceClient
from azure.core.credentials import AzureKeyCredential
def run_ocr(image_bytes):
document_analysis_client = DocumentIntelligenceClient(endpoint=DI_ENDPOINT, credential=AzureKeyCredential(DI_KEY))
poller = document_analysis_client.begin_analyze_document(‘prebuilt-read’, analyze_request=image_bytes, content_type=’application/octet-stream’)
return poller.result().content
Manually OCR-enhanced GPT payload
Below is an example of manually OCR-enhanced payload. It has 2 changes to the original payload above:
System message is added after all system messages in original prompt with text DEFAULT_OCR_SYSTEM_PROMPT (see below).
OCR text content is added as a first element of user message content. OCR text is produced by “run_ocr” function above.
Same way users can modify any of their own prompts to achieve same results as current OCR enhancements. Payload below illustrate this update: additional system message is at lines 15-23, additional user message is at lines 27-30:
DEFAULT_OCR_PROMPT = “**OCR text:**”
DEFAULT_OCR_SYSTEM_PROMPT = f”Additional instructions: – You’re known to be good at recognizing equations and complete partially occluded text. Additional information has been generated by an OCR model regarding text present in the image in format of {DEFAULT_OCR_PROMPT}. However, you should refrain from incorporating the text information into your description, and only consult the OCR text when the text within the image is unclear to you. Follow your original analysis if OCR text does not help. “
payload_manually_ocr_enhanced = {
“messages”: [
{
“role”: “system”,
“content”: [
{
“type”: “text”,
“text”: “You are AI assistance to help extract information.”
}
]
},
{
“role”: “system”,
“content”: [
{ # OCR enhanced system message with additional instructions
“type”: “text”,
“text”: DEFAULT_OCR_SYSTEM_PROMPT
}
]
},
{
“role”: “user”,
“content”: [
{ # OCR enhanced user message with OCR text
“type”: “text”,
“text”: f”{DEFAULT_OCR_PROMPT} {run_ocr(IMAGE_BYTES)}”
},
{
“type”: “image_url”,
“image_url”: {
“url”: “data:” + “image/jpeg;base64,” + encoded_image
}
},
{
“type”: “text”,
“text”: “Receipt Total as number. Just the number, no currency symbol or additional text.”
}
]
}
],
“temperature”: 0.0, “max_tokens”: 1000
}
Compare results
Code below makes 4 different Azure OpenAI calls:
GPT-4 Turbo Vision Preview model with OCR Enhancement Disabled.
GPT-4 Turbo Vision Preview model with OCR Enhancement Enabled.
GPT-4 Turbo Vision Preview model for manually OCR-enhanced payload (OCR enhancement disabled).
GPT-4 Turbo 2024-04-09 GA model for manually OCR-enhanced payload.
def run_gpt(scenario, payload, url, api_key):
response_json = requests.post(url, json=payload, headers={“Content-Type”: “application/json”, “api-key”: api_key}).json()
print(f”{scenario}:n{response_json[‘usage’]}n{response_json[‘choices’][0][‘message’][‘content’]}n”)
return
# 1. GPT-4 Turbo Vision Preview model with OCR Enhancement disabled
payload_sample[‘enhancements’] = {‘ocr’: {‘enabled’: False}} # Disabled OCR enhancement
run_gpt(“1. GPT-4 Turbo with Vision Preview Results with OCR enhancement Disabled”,
payload_sample, f”{GPT4V_PREVIEW_ENDPOINT}/openai/deployments/{GPT4V_PREVIEW_DEPLOYMENT}/extensions/chat/completions?api-version=2023-12-01-preview”, GPT4V_PREVIEW_KEY)
# 2. GPT-4 Turbo Vision Preview model with OCR Enhancement enabled
payload_sample[‘enhancements’] = {‘ocr’: {‘enabled’: True}} # Enabled OCR enhancement
run_gpt(“2. GPT-4 Turbo with Vision Preview Results with OCR enhancement Enabled”,
payload_sample, f”{GPT4V_PREVIEW_ENDPOINT}/openai/deployments/{GPT4V_PREVIEW_DEPLOYMENT}/extensions/chat/completions?api-version=2023-12-01-preview”, GPT4V_PREVIEW_KEY)
# 3. GPT-4 Turbo Vision Preview model with manually OCR-enhanced payload (OCR enhancement disabled)
run_gpt(“3. GPT-4 Turbo with Vision Preview Results for manually OCR-enhanced payload (OCR enhancement Disabled)”,
payload_manually_ocr_enhanced, f”{GPT4V_PREVIEW_ENDPOINT}/openai/deployments/{GPT4V_PREVIEW_DEPLOYMENT}/chat/completions?api-version=2023-12-01-preview”, GPT4V_PREVIEW_KEY)
# 4. GPT-4 Turbo 2024-04-09 GA model with manually OCR-enhanced payload.
run_gpt(“4. GPT-4 Turbo 2024-04-09 GA Results for manually OCR-enhanced payload”,
payload_manually_ocr_enhanced, f”{GPT4_GA_ENDPOINT}/openai/deployments/{ GPT4_GA_DEPLOYMENT}/chat/completions?api-version=2024-02-15-preview”,GPT4_GA_KEY)
Script outputs GPT results for 4 scenarios and as well as token usage (see below).
Number of “prompt_tokens” for scenario #2 (OCR enhancement enabled) is 1032. It is larger than 801 “prompt_tokens” for scenario #1 (OCR enhancement disabled) even exactly same payload payload_sample was sent to the Azure OpenAI API. It happens because OCR enhancement adds OCR text into the input prompt, and it counts as additional tokens.
Results #2 (with OCR enhancement enabled) and #3 (manually OCR-enhanced payload) are identical. Most important is that number of “prompt_tokens” are identical and equals to 1032. It illustrates that manually OCR-enhanced payload payload_manually_ocr_enhanced is exactly same as the original payload_sample modified by OCR enhancement by Azure OpenAI service backend.
Results #3 (GPT-4 Turbo with Vision Preview) and #4 (GPT-4 Turbo 2024-04-09 GA) are identical for payload_manually_ocr_enhanced, but they may be slightly different for other prompts and/or images since GPT-4 Turbo 2024-04-09 GA model may behave differently than GPT-4 Turbo Vision Preview model.
1. GPT-4 Turbo with Vision Preview Results with OCR enhancement Disabled:
{‘completion_tokens’: 2, ‘prompt_tokens’: 801, ‘total_tokens’: 803}
5000
2. GPT-4 Turbo with Vision Preview Results with OCR enhancement Enabled:
{‘completion_tokens’: 2, ‘prompt_tokens’: 1032, ‘total_tokens’: 1034}
4500
3. GPT-4 Turbo with Vision Preview Results for manually OCR-enhanced payload (OCR enhancement Disabled):
{‘completion_tokens’: 2, ‘prompt_tokens’: 1032, ‘total_tokens’: 1034}
4500
4. GPT-4 Turbo 2024-04-09 GA results for manually OCR-enhanced payload:
{‘completion_tokens’: 2, ‘prompt_tokens’: 1032, ‘total_tokens’: 1034}
4500
We hope this blog post helps to understand exactly how OCR enhancement works and allows you to successfully migrate to GPT-4 Turbo GA model.
Thanks
Microsoft Tech Community – Latest Blogs –Read More
Device selection for software download
I am unable to Download anything in this computer.Please advice Regards,Carlos Read More
What would you do? User needs to generate a random number and ideally not leave the worksheet
Hey Gang! I have a spreadsheet (see below) that requires the user to generate unique identifiers for the PCODE row and the BUNDLE IDENTIFIER row. What I have them doing is clicking on another worksheet and clicking the appropriate button, then return to the original worksheet and paste the value into the cell. The buttons are connected to a VBA routine that does the actual generation.
I have been struggling with how I can do this from within the same worksheet. The worksheet consists of different row types (PCODE, BUNDLE IDENTIFIER, COMPONENT), as the user builds out their bundle.
Update – I have found a method, which has the formula embedded in the target cell. The formula is connected to a VBA function. This works however, I need to copy that value into subsequent rows, and if I drag it, the formula comes along, so I am forced to copy and paste values which is a tad clunky.
formula – =ConcatRandomNumberWithSuffix(“B”)
It will also be subject to changing the value if i refresh the spreadsheet which would be a disaster.
Sub GeneratePCODE_Click()
Dim randomNumber As Long
Dim formattedNumber As String
Dim finalString As String
Dim ws As Worksheet
Dim genPCODEBUNDLEID As Worksheet
Dim cell As Range
! FOR PCODE
‘ Set the worksheet location for the output variables
Set genPCODEBUNDLEID = ThisWorkbook.Sheets(“Generate_PCODE_BUNDLEID”)
Set cell = genPCODEBUNDLEID.Range(“D9”)
cell.Value = “” ‘ clear out the value in the spreadsheet
genPCODEBUNDLEID.Calculate ‘ recalculate the sheet
‘ Generate a random number between 1,000,000 and 9,999,998
randomNumber = Application.WorksheetFunction.RandBetween(1000000, 9999998)
‘ Format the number with leading zeros to make it a 7-digit number
formattedNumber = Format(randomNumber, “0000000”)
‘ Concatenate the formatted number with “Q”
finalString = formattedNumber & “Q”
‘ Set the PCODE value
cell.Value = finalString
End Sub
Sub GenerateBUNDLEID_Click()
Dim randomNumber As Long
Dim formattedNumber As String
Dim finalString As String
Dim ws As Worksheet
Dim genPCODEBUNDLEID As Worksheet
Dim cell As Range
! FOR BUNDLEID
‘ Set the worksheet location for the output variables
Set genPCODEBUNDLEID = ThisWorkbook.Sheets(“Generate_PCODE_BUNDLEID”)
Set cell = genPCODEBUNDLEID.Range(“D18”)
cell.Value = “” ‘ clear out the value in the spreadsheet
genPCODEBUNDLEID.Calculate ‘ recalculate the sheet
‘ Generate a random number between 1,000,000 and 9,999,998
randomNumber = Application.WorksheetFunction.RandBetween(1000000, 9999998)
‘ Format the number with leading zeros to make it a 7-digit number
formattedNumber = Format(randomNumber, “0000000”)
‘ Concatenate the formatted number with “B”
finalString = formattedNumber & “B”
cell.Value = finalString
End Sub
Hey Gang! I have a spreadsheet (see below) that requires the user to generate unique identifiers for the PCODE row and the BUNDLE IDENTIFIER row. What I have them doing is clicking on another worksheet and clicking the appropriate button, then return to the original worksheet and paste the value into the cell. The buttons are connected to a VBA routine that does the actual generation. I have been struggling with how I can do this from within the same worksheet. The worksheet consists of different row types (PCODE, BUNDLE IDENTIFIER, COMPONENT), as the user builds out their bundle. Update – I have found a method, which has the formula embedded in the target cell. The formula is connected to a VBA function. This works however, I need to copy that value into subsequent rows, and if I drag it, the formula comes along, so I am forced to copy and paste values which is a tad clunky.formula – =ConcatRandomNumberWithSuffix(“B”)It will also be subject to changing the value if i refresh the spreadsheet which would be a disaster. Sub GeneratePCODE_Click()Dim randomNumber As LongDim formattedNumber As StringDim finalString As StringDim ws As WorksheetDim genPCODEBUNDLEID As WorksheetDim cell As Range! FOR PCODE’ Set the worksheet location for the output variablesSet genPCODEBUNDLEID = ThisWorkbook.Sheets(“Generate_PCODE_BUNDLEID”)Set cell = genPCODEBUNDLEID.Range(“D9”)cell.Value = “” ‘ clear out the value in the spreadsheetgenPCODEBUNDLEID.Calculate ‘ recalculate the sheet’ Generate a random number between 1,000,000 and 9,999,998randomNumber = Application.WorksheetFunction.RandBetween(1000000, 9999998)’ Format the number with leading zeros to make it a 7-digit numberformattedNumber = Format(randomNumber, “0000000”)’ Concatenate the formatted number with “Q”finalString = formattedNumber & “Q”‘ Set the PCODE valuecell.Value = finalStringEnd SubSub GenerateBUNDLEID_Click()Dim randomNumber As LongDim formattedNumber As StringDim finalString As StringDim ws As WorksheetDim genPCODEBUNDLEID As WorksheetDim cell As Range! FOR BUNDLEID’ Set the worksheet location for the output variablesSet genPCODEBUNDLEID = ThisWorkbook.Sheets(“Generate_PCODE_BUNDLEID”)Set cell = genPCODEBUNDLEID.Range(“D18”)cell.Value = “” ‘ clear out the value in the spreadsheetgenPCODEBUNDLEID.Calculate ‘ recalculate the sheet’ Generate a random number between 1,000,000 and 9,999,998randomNumber = Application.WorksheetFunction.RandBetween(1000000, 9999998)’ Format the number with leading zeros to make it a 7-digit numberformattedNumber = Format(randomNumber, “0000000”)’ Concatenate the formatted number with “B”finalString = formattedNumber & “B”cell.Value = finalStringEnd Sub Read More