First, you need to remember that with IPv6 any machine may have several IPv6 addresses, and they may be on separate networks, and any of them might be used, depending on where you want to reach.
So, before you can answer the question of what is your source IP address you have to decide where you're sending the traffic. Then you can just ask Linux to tell you which IPv6 address will be the source when you send traffic to that destination.
If you're sending it to "the Internet" then just pick a global IPv6 address at random, e.g. Google's Public DNS address.
ip r get to 2001:4860:4860::8888 | perl -ne '/src ([\w:]+)/ && print "$1\n"'
2001:db8:f387:c818:5:2:0:1000
This asks Linux for the route to that destination. Perl parses the result looking for src
and then prints the next field.
By providing a different destination, you may receive a different source address:
ip r get to ::1 | perl -ne '/src ([\w:]+)/ && print "$1\n"'
::1