Two-Weapon Fighting is best for DPR
TL;DR: The Heavy weapon causes the Halfling to miss too often, losing a lot of DPR and the damage from the second attack of Two-Weapon Fighting is greater than the damage gained from the higher damage die. Eldritch Blast is a very poor option before level 5 if you don't have the Agonizing Blast invocation.
Heavy vs Versatile
First let's compare Heavy weapons with Versatile weapons wielded in 2 hands. A Heavy weapon's 1d12, on average, deals 1 more damage on a normal hit and 2 more damage on a critical hit when compared to a Versatile weapon's 1d10. So, if we multiply these damages by hit chance and crit chance, we can arrive at how much damage a Heavy weapon deals over a Versatile weapon (for a Medium creature).
Regular Hit Formula: \$HitChance=\frac{(20-(Target AC - Attack Bonus))}{20}\$
\begin{array}{c|c}
\text{Target AC}&\text{Damage Difference} \\ \hline
10&0.85 \\
11&0.8 \\
12&0.75 \\
13&0.7 \\
14&0.65 \\
15&0.6 \\
16&0.55 \\
17&0.5 \\
18&0.45 \\
19&0.4 \\
20&0.35 \\
21&0.3 \\
22&0.25 \\
23&0.2 \\
24&0.15 \\
25+&0.1 \\
\end{array}
Formula: \$Regular Damage+Critical Damage=1*HitChance+2*0.05 \$
However, Halfling are small, so they have disadvantage on checks with Heavy weapons. This means there is a 95% chance that a critical hit is not one and a chance that a hit becomes a miss. This means the entire damage of the attack (or extra die) is lost, and that damage loss is shown in the following chart:
\begin{array}{c|c}
\text{Target AC}&\text{Loss from Disadv} \\ \hline
10&1.83 \\
11&2.09 \\
12&2.30 \\
13&2.47 \\
14&2.59 \\
15&2.66 \\
16&2.68 \\
17&2.66 \\
18&2.59 \\
19&2.47 \\
20&2.30 \\
21&2.09 \\
22&1.83 \\
23&1.52 \\
24&1.16 \\
25+&0.76 \\
\end{array}
Formula: \$Regular Loss+Critical Loss=9.5*HitChance*(1-HitChance)+6.5*0.05*0.95 \$
Since at every relevant AC, the loss is greater than the damage gained from the higher damage die, all other things equal the Versatile weapon is better than the Heavy weapon for the Halfling.
Versatile vs Two-Weapon Fighting
Now that we know Versatile is better than Heavy at all Armor Classes, let's compare Versatile and Two-Weapon Fighting. First consider only the first attack. A Versatile weapon's 1d10, on average, will deal 2 more damage on a normal hit and 4 more damage on a critical hit when compared to a Light weapon's 1d6. We follow the same procedure as with Heavy vs Versatile and see the damage based on target Armor Class.
\begin{array}{c|c}
\text{Target AC}&\text{Damage Difference} \\ \hline
10&1.7 \\
11&1.6 \\
12&1.5 \\
13&1.4 \\
14&1.3 \\
15&1.2 \\
16&1.1 \\
17&1.0 \\
18&0.9 \\
19&0.8 \\
20&0.7 \\
21&0.6 \\
22&0.5 \\
23&0.4 \\
24&0.3 \\
25+&0.2 \\
\end{array}
Formula: \$Regular Damage+Critical Damage=2*HitChance+4*0.05 \$
However, When using a Light weapon, the warlock can use Two-Weapon Fighting to get another attack. This other attack doesn't add the ability modifier, but still increases damage by an average of 3.5 on a hit and 7 on a crit. Here is the damage from second attack modified by hit and crit chance:
\begin{array}{c|c}
\text{Target AC}&\text{Second Attack} \\ \hline
10&2.98 \\
11&2.8 \\
12&2.63 \\
13&2.45 \\
14&2.28 \\
15&2.15 \\
16&1.93 \\
17&1.75 \\
18&1.58 \\
19&1.4 \\
20&1.23 \\
21&1.05 \\
22&0.88 \\
23&0.7 \\
24&0.53 \\
25+&0.35 \\
\end{array}
Formula: \$Damage=3.5*HitChance+7*0.05 \$
Since, at every relevant AC, the damage from the second attack is greater than the damage gained from the higher damage die, all other things equal Two-Weapon Fighting is better than the Versatile weapon.
Eldritch Blast?
Eldritch Blast is even worse than a Versatile weapon at level 4. Since the warlock does not add Charisma modifier to damage from eldritch blast, the spell loses 3 damage on a regular and critical hit when compared to the Versatile weapon. Here is the Damage Difference between 1 attack of a Versatile weapon and an eldritch blast beam:
\begin{array}{c|c}
\text{Target AC}&\text{Damage Difference} \\ \hline
10&2.4 \\
11&2.25 \\
12&2.1 \\
13&1.95 \\
14&1.8 \\
15&1.65 \\
16&1.5 \\
17&1.35 \\
18&1.2 \\
19&1.05 \\
20&0.9 \\
21&0.75 \\
22&0.6 \\
23&0.45 \\
24&0.3 \\
25+&0.15 \\
\end{array}
Formula: \$Regular Damage+Critical Damage=3*HitChance+0*0.05 \$
Since the Versatile weapon is already established as worse for DPR than Two-Weapon Fighting, eldritch blast also falls short (although it does beat out Heavy weapons at low Armor Classes).
Summary Table
I've been doing comparisons throughout this answer to show how flexible math can be for figuring out differences between a few different options saving some time on doing the entire damage calculation. But here is the entire damage calculation for the sake of completeness:
\begin{array}{c|c|c|c}
\text{Target AC}&\text{Heavy}&\text{Versatile}&\text{Two-Weapon}&\text{Eldritch Blast} \\ \hline
\text{10}&6.41&7.08&8.35&4.68 \\
\text{11}&5.67&6.65&7.85&4.4 \\
\text{12}&4.98&6.23&7.35&4.13 \\
\text{13}&4.34&5.8&6.85&3.85 \\
\text{14}&3.75&5.38&6.35&3.58 \\
\text{15}&3.20&4.95&5.85&3.3 \\
\text{16}&2.7&4.53&5.35&3.03 \\
\text{17}&2.25&4.1&4.85&2.75 \\
\text{18}&1.85&3.68&4.35&2.48 \\
\text{19}&1.49&3.25&3.85&2.2 \\
\text{20}&1.18&2.83&3.35&1.93 \\
\text{21}&0.92&2.4&2.85&1.65 \\
\text{22}&0.71&1.98&2.35&1.38 \\
\text{23}&0.54&1.55&1.85&1.1 \\
\text{24}&0.42&1.13&1.35&0.83 \\
\text{25+}&0.35&0.7&0.85&0.55 \\
\end{array}
Formula: \$Regular Damage+Critical Damage+Second Hit+Second Damage=\frac{Damage Die+1+2*Modifier}{2}*HitChance+2*\frac{DamageDie+1}{2}*0.05+\frac{Damage Die+1}{2}*HitChance+2*\frac{DamageDie+1}{2} \$
note: eldritch blast consists of only a second attack in this formula and the Heavy column has Disadvantage factored in (square HitChance)
Level 5
Level 5 changes things a lot. Eldritch blast gets a second beam, your proficiency bonus increases, and you get access to Thirsting Blade and Eldritch Smite as Eldritch Invocation options if you want to choose them. Since you said you choose Invocations for roleplay purposes, I'm going to assume you did not choose a combat Invocation for this table (if you want to know how to maximize the functionality of one of these invocations, I suggest you ask a new question). Below find the adjusted table for level 5:
\begin{array}{c|c|c|c}
\text{Target AC}&\text{Heavy}&\text{Versatile}&\text{Two-Weapon}&\text{Eldritch Blast} \\ \hline
\text{10}&7.19&7.5&8.85&9.9 \\
\text{11}&6.41&7.08&8.35&9.35 \\
\text{12}&5.67&6.65&7.85&8.8 \\
\text{13}&4.98&6.23&7.35&8.25 \\
\text{14}&4.34&5.8&6.85&7.7 \\
\text{15}&3.75&5.38&6.35&7.15 \\
\text{16}&3.20&4.95&5.85&6.6 \\
\text{17}&2.7&4.53&5.35&6.05 \\
\text{18}&2.25&4.1&4.855&5.5 \\
\text{19}&1.85&3.68&4.35&4.95 \\
\text{20}&1.49&3.25&3.85&4.4 \\
\text{21}&1.18&2.83&3.35&3.85 \\
\text{22}&0.92&2.4&2.85&3.3 \\
\text{23}&0.71&1.98&2.35&2.75 \\
\text{24}&0.54&1.55&1.85&2.2 \\
\text{25}&0.42&1.13&1.35&1.65 \\
\text{26+}&0.35&0.7&0.85&1.1 \\
\end{array}
Note: the formulae are the same as for the level 4 table, but the eldritch blast column is doubled since there are now two beams
As you can see, without a combat invocation, eldritch blast surpasses the weapon options at level 5 even without Agonizing Blast.