venndiagram hardwires the position with node[below].
You can patch to have node[above].
% Source - https://tex.stackexchange.com/q/761544
% Posted by Arne Timperman, modified by community. See post 'Timeline' for change history
% Retrieved 2026-04-03, License - CC BY-SA 4.0
\documentclass[10pt,a4paper]{book}
\usepackage{venndiagram}
\usepackage{xpatch}
\ExpandArgs{c}\xpatchcmd{endvenndiagram2sets}{node[below]}{node[above]}{}{}
\ExpandArgs{c}\xpatchcmd{endvenndiagram2sets}{node[below]}{node[above]}{}{}
\begin{document}
\begin{center}
\begin{venndiagram2sets}[showframe=false]
\fillA \fillB
\node at (1,2) {a};
\node at (1.5,1) {b};
\node at (1.8,2) {c};
\node at (2.5,1.4) {d};
\node at (2.5,1.8) {e};
\node at (3.5,1.3) {f};
\node at (3.7,1.8) {g};
\end{venndiagram2sets}
\end{center}
\end{document}

A more general solution that allows you to decide for “in” or “out”:
% Source - https://tex.stackexchange.com/q/761544
% Posted by Arne Timperman, modified by community. See post 'Timeline' for change history
% Retrieved 2026-04-03, License - CC BY-SA 4.0
\documentclass[10pt,a4paper]{book}
\usepackage{venndiagram}
\usepackage{xpatch}
\ExpandArgs{c}\xpatchcmd{endvenndiagram2sets}{node[below]}{node[labelpos]}{}{}
\ExpandArgs{c}\xpatchcmd{endvenndiagram2sets}{node[below]}{node[labelpos]}{}{}
\makeatletter
\define@key{venn}{labelpos}{\tikzset{labelpos/.style=#1}}
\setkeys{venn}{labelpos=below} % default is inside
\makeatother
\begin{document}
\begin{center}
\begin{venndiagram2sets}[showframe=false]
\fillA \fillB
\node at (1,2) {a};
\node at (1.5,1) {b};
\node at (1.8,2) {c};
\node at (2.5,1.4) {d};
\node at (2.5,1.8) {e};
\node at (3.5,1.3) {f};
\node at (3.7,1.8) {g};
\end{venndiagram2sets}
\end{center}
\begin{center}
\begin{venndiagram2sets}[showframe=false,labelpos=above]
\fillA \fillB
\node at (1,2) {a};
\node at (1.5,1) {b};
\node at (1.8,2) {c};
\node at (2.5,1.4) {d};
\node at (2.5,1.8) {e};
\node at (3.5,1.3) {f};
\node at (3.7,1.8) {g};
\end{venndiagram2sets}
\end{center}
\end{document}

This doesn't cover three sets. Possibly some similar patches can do.
You can use in and out, provided you replace the previous code between \makeatletter and \makeatother with the following:
\pgfkeys{
/labelpos/.is choice,
/labelpos/in/.code=\tikzset{labelpos/.style=below},
/labelpos/out/.code=\tikzset{labelpos/.style=above},
}
\makeatletter
\define@key{venn}{labelpos}{\pgfkeys{/labelpos=#1}}
\makeatother
\setkeys{venn}{labelpos=in}
Full patch also for three sets
% Source - https://tex.stackexchange.com/q/761544
% Posted by Arne Timperman, modified by community. See post 'Timeline' for change history
% Retrieved 2026-04-03, License - CC BY-SA 4.0
\documentclass[10pt,a4paper]{book}
\usepackage{venndiagram}
\usepackage{xpatch}
\ExpandArgs{c}\xpatchcmd{endvenndiagram2sets}{node[below]}{node[labelpos]}{}{}
\ExpandArgs{c}\xpatchcmd{endvenndiagram2sets}{node[below]}{node[labelpos]}{}{}
\ExpandArgs{c}\xpatchcmd{endvenndiagram3sets}
{node[below] (labelA)}
{node[labelpos] (label A)}
{}{}
\ExpandArgs{c}\xpatchcmd{endvenndiagram3sets}
{node[below] (labelB)}
{node[labelpos] (labelB)}
{}{}
\ExpandArgs{c}\xpatchcmd{endvenndiagram3sets}
{node[above] (labelC)}
{node[labelposinv] (labelC)}
{}{}
\pgfkeys{
/labelpos/.is choice,
/labelpos/in/.code=\tikzset{labelpos/.style=below,labelposinv/.style=above},
/labelpos/out/.code=\tikzset{labelpos/.style=above,labelposinv/.style=below},
}
\makeatletter
\define@key{venn}{labelpos}{\pgfkeys{/labelpos=#1}}
\makeatother
\setkeys{venn}{labelpos=in}
\begin{document}
\begin{center}
\begin{venndiagram2sets}[showframe=false]
\fillA \fillB
\node at (1,2) {a};
\node at (1.5,1) {b};
\node at (1.8,2) {c};
\node at (2.5,1.4) {d};
\node at (2.5,1.8) {e};
\node at (3.5,1.3) {f};
\node at (3.7,1.8) {g};
\end{venndiagram2sets}
\qquad
\begin{venndiagram2sets}[showframe=false,labelpos=out]
\fillA \fillB
\node at (1,2) {a};
\node at (1.5,1) {b};
\node at (1.8,2) {c};
\node at (2.5,1.4) {d};
\node at (2.5,1.8) {e};
\node at (3.5,1.3) {f};
\node at (3.7,1.8) {g};
\end{venndiagram2sets}
\end{center}
\begin{center}
\begin{venndiagram3sets}
\fillA \fillB \fillC
\end{venndiagram3sets}
\qquad
\begin{venndiagram3sets}[labelpos=out]
\fillA \fillB \fillC
\end{venndiagram3sets}
\end{center}
\end{document}
